function sfstatus1b_obj()
{
   var MsgName = "[SFSTATUS1B]"
   
   this.update = function(input)
   {
      var start = input.indexOf(MsgName);

      //don't start parsing if this is not the right message
      if(start < 0)
      {
         return false;
      }
      this.name = MsgName;

      //init the parser
      var p = new parser(input, start + MsgName.length);

      //get the sfstatus1b info
      this.length     = p.fetchU16();
      this.week       = p.fetchU16();
      this.TOWms      = p.fetchU32();
      this.ver        = p.fetchU08();
      
      Long01               = p.fetchU32();
      this.channel_num     = Long01 & 0x1FFFFF;
      this.satellite_id    = (Long01 >> 22) & 0x3FF;

      this.indicator       = p.fetchU08();
      switch (this.indicator) {
          case 1:
              this.indicator = "98W Laurentides";
              break;
          case 2:
              this.indicator = "25E Burum";
              break;
          case 3:
              this.indicator = "143.5E Auckland";
              break;
          case 4:
              this.indicator = "178E Santa Paula, CA";
              break;          
          case 5:
              this.indicator = "54W Southbury";
              break;
          case 6:
              this.indicator = "64E Perth";
              break;
          case 9:
              this.indicator = "Manual Override";
              break;
          default :
              this.indicator = "Unknown";
              break;
      }
      
      this.signal_status   = p.fetchU08();
      switch(this.signal_status)
      {
	  case 0:
	      this.signal_status = "PWON";
	      break;
	  case 1:
	      this.signal_status = "IDLE";
	      break;
	  case 2:
	      this.signal_status = "WAIT";
	      break;
	  case 3:
	      this.signal_status = "STRT";
	      break;
	  case 4:
	      this.signal_status = "SGDP";
	      break;
	  case 5:
	      this.signal_status = "SGDF";
	      break;
	  case 6:
	      this.signal_status = "FREQ";
	      break;
	  case 7:
	      this.signal_status = "ACQ";
	      break;
	  case 8:
	      this.signal_status = "PLIN";
	      break;
	  case 9:
	      this.signal_status = "TRCK";
	      break;
	  default:
	      this.signal_status = "Unknown";
	      break; 
      }
 
      this.signal_strength = p.fetchR32() / 4.0;
      this.agc_voltage     = p.fetchR32();
      this.good_percentage = p.fetchR32();
      this.idle_percentage = p.fetchR32();
      this.resync_count    = p.fetchU32();
      this.freq_offset     = p.fetchR32();
      this.license_status  = p.fetchU08();
      this.channel_step    = p.fetchU32();

      return true;
   }
}
