function SfSat()
{
   this.id;
   this.lon;
   this.lookAngle;
   this.mode;
}

function ISSF(id)      { return (id >= 320) && (id <= 680); }

function sfsatlist1b_obj()
{
   var MsgName = "[SFSATLIST1B]"
   
   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 sfsatlistb info
      this.length       = p.fetchU16();
      this.week       = p.fetchU16();
      this.TOWms      = p.fetchU32();
      this.TOW        = this.TOWms/1000;

      this.ver        = p.fetchU04();
      this.conf       = p.fetchU04();
      
      //verify that the length provided is valid
      iPktLen = this.length - 9;
      iMinLen = 1 + 0 * 12;
      iMaxLen = 2 + 17 * 12;
      if (  (iPktLen < iMinLen) || (iPktLen > iMaxLen) )
      {
         return false;
      }
      
      //get the rest of the info
      this.satCount = p.fetchU08();
      this.sats = [];
      
      for(i=0; i<this.satCount; i++)
      {
         this.sats[i] = new SfSat;
         this.sats[i].id         = p.fetchU16();
         
         this.sats[i].lon        = p.fetchR64();
         
         this.sats[i].lookAngle  = p.fetchU08();
         this.sats[i].mode       = p.fetchU08();
      }
      
      return true;
   }
}