Ejemplo n.º 1
0
int parse_pscl_IP ( 
    uchar_t *packet,
    ushort_t pkttype )
{

int nsamp, yr, day, hr, min, sec, msec;
ushort_t newtype; 
PktPar pack;
char stime[64], key[64];
struct PsclPreHdr pkt;
int dasid;

/* Get parameters for current datatype  */

      newtype = PSCLIP;
      if( !get_packet( newtype, &pack) ) return -1;
    
      dasid = bcd2hex( &packet[4] , 4 );
      Par.staid = dasid;
      Par.chan = -1;
      Par.packet = pack;
      Par.hdrtype = ( int )decode( pack.hdrtype ); 

      memcpy( (char *) &pkt, packet, sizeof( struct PsclPreHdr ));
      yr = bcd2hex( pkt.year , 2 );
      sprintf( (char *) &stime[0], "%02x%02x%02x%02x%02x%02x\0", 
        pkt.bcdtime[0], pkt.bcdtime[1], pkt.bcdtime[2], 
        pkt.bcdtime[3], pkt.bcdtime[4], pkt.bcdtime[5]); 
      sscanf( (char *) &stime[0], "%3d%2d%2d%2d%3d", 
        &day, &hr, &min, &sec, &msec);
      if( yr < 50 ) 
          sprintf( (char *) &stime[0], "20%02d%03d:%02d:%02d:%02d.%03d\0", 
                                        yr, day, hr, min, sec, msec); 
      else
          sprintf( (char *) &stime[0], "19%02d%03d:%02d:%02d:%02d.%03d\0", 
                                        yr, day, hr, min, sec, msec); 
      Par.time = str2epoch( (char *) &stime[0] );
      
   
      sprintf( &Par.packet.pkttype[0], "PSCLIP\0");
      sprintf( (char *) &key[0], "%d", newtype );
      setarr( RawPkts, (char *) &key[0], (char *) &Par.raw);
      
      return (int) pkttype;
}
Ejemplo n.º 2
0
static void smu_parse_get_rtc_reply(struct smu_cmd_buf *cmd_buf,
				    struct rtc_time *time)
{
	time->tm_sec = bcd2hex(cmd_buf->data[0]);
	time->tm_min = bcd2hex(cmd_buf->data[1]);
	time->tm_hour = bcd2hex(cmd_buf->data[2]);
	time->tm_wday = bcd2hex(cmd_buf->data[3]);
	time->tm_mday = bcd2hex(cmd_buf->data[4]);
	time->tm_mon = bcd2hex(cmd_buf->data[5]) - 1;
	time->tm_year = bcd2hex(cmd_buf->data[6]) + 100;
}
Ejemplo n.º 3
0
void mcp79410_get(struct mcp79410_time_t *time) {
	// register, unused...
	// seconds, minutes, hours, dow, date, month, year
	uint8_t data[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
	
	twi_write_to(0x6f, data, 1, TWI_BLOCK, TWI_NO_STOP);
	twi_read_from(0x6f, data, 7, TWI_STOP);
	
	// it's not clear from the datasheet if the unused bits are 0 or undefined
	time->second = bcd2hex(data[0] & 0x7f);		// bit 7 is the ST flag
	time->minute = bcd2hex(data[1]);
	time->hour = bcd2hex(data[2]);
	time->wday = bcd2hex(data[3] & 0x07);		// bit 5 is OSCRUN, bit 4 is PWRFAIL, bit 3 is VBATEN
	time->mday = bcd2hex(data[4]);
	time->month = bcd2hex(data[5] & 0x1f);		// bit 5 is LPYR
	time->year = 2000 + bcd2hex(data[6]);
}
Ejemplo n.º 4
0
void ds1307_get(struct ds1307_time_t *time) {
	// register, unused...
	// seconds, minutes, hours, dow, date, month, year
	uint8_t data[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
	
	twi_write_to(0x68, data, 1, TWI_BLOCK, TWI_NO_STOP);
	twi_read_from(0x68, data, 7, TWI_STOP);
	
	// it's not clear from the datasheet if the unused bits are 0 or undefined
	time->second = bcd2hex(data[1] & 0x7f);   // bit 7 is the CH flag
	time->minute = bcd2hex(data[2]);
	time->hour = bcd2hex(data[3]);
	time->wday = data[4];
	time->mday = bcd2hex(data[5]);
	time->month = bcd2hex(data[6]);
	time->year = 2000 + bcd2hex(data[7]);
}
Ejemplo n.º 5
0
int parse_pscl_DP ( 
    uchar_t *packet,
    ushort_t  pkttype )
{
   double etime; 
   Stream *stream, *strm_tim;
   ushort_t  newtype ;
   int dasid, event, streamid, chan, pktnum;
   int nsamp, yr, day, hr, min, sec, msec;
   char dtype[2], ptype[64], key[64], skey[64], stime[64];
   PktPar pack;
   int i;


   dasid = bcd2hex( &packet[4] , 4 );
   pktnum = bcd2hex( &packet[14] , 4 );
   event = bcd2hex( &packet[16], 4 ); 
   streamid = bcd2hex( &packet[18], 2 ); 
   streamid++;
   chan = bcd2hex( &packet[19], 2 ); 
   chan++;

   nsamp = bcd2hex( &packet[20], 4 ); 
   sprintf( (char *) &dtype[0], "%02x", packet[23] ); 
 
   sprintf( skey, "%d_%d\0", dasid, streamid );
  
   if( PsclSTRM == NULL ) return 0;
   stream = ( Stream *) getarr( PsclSTRM, (char *)&skey[0]);
   if( stream == NULL ) {
      complain( 0, "Can't get %s stream info\n", skey); 
      hexdump( stderr, packet, 64 );
      return 0;
   }
  
   if( stream->samprate <= 0 ) return 0;

   switch ( dtype[0] )  {

    case 'c':
       strcpy( (char *) &dtype[0], "c0");
       if( stream->samprate >= 100 )  {
         sprintf( &ptype[0], "CPSCLHS\0");
         newtype = CPSCLHS;
       } else { 
         sprintf( &ptype[0], "CPSCLLS\0");
         newtype = CPSCLLS;
       }
       break;

    case '1':
       strcpy( (char *) &dtype[0], "s2");
       if( stream->samprate >= 100 )  {
         sprintf( &ptype[0], "PSCLHS\0");
         newtype = PSCLHS;
       } else { 
         sprintf( &ptype[0], "PSCLLS\0");
         newtype = PSCLLS;
       }
       break;

    case '3':
       strcpy( (char *) &dtype[0], "s4");
       if( stream->samprate >= 100 )  {
         sprintf( &ptype[0], "PSCLHS\0");
         newtype = PSCLHS;
       } else { 
         sprintf( &ptype[0], "PSCLLS\0");
         newtype = PSCLLS;
       }
       break;

    default:
       complain( 0, "Can't recognize a PASSCAL data packet type. HS?LS?\n");
       return -1;
   }
   
   Par.chan = chan;               
   Par.staid =  dasid;
   
   if( !get_packet( newtype, &pack) ) return -1;
   
   strcpy( &pack.datatype[0], &dtype[0]);
   strcpy( &pack.pkttype[0], &ptype[0]);
 
   pack.nsamp = nsamp;
   pack.nchan = 1;               
   pack.srate = stream->samprate;               
   Par.packet = pack;
   
   yr = bcd2hex( &packet[3] , 2 ); 
   if(yr < 50) yr += 2000;
   else yr += 1900;
   sprintf( (char *) &stime[0], "%02x%02x%02x%02x%02x%02x\0", 
     packet[6], packet[7], packet[8], packet[9],
     packet[10], packet[11]); 
   sscanf( (char *) &stime[0], "%3d%2d%2d%2d%3d", 
     &day, &hr, &min, &sec, &msec); 
   sprintf( (char *) &stime[0], "%02d%03d:%02d:%02d:%02d.%03d\0", 
     yr, day, hr, min, sec, msec); 
   Par.time = str2epoch( (char *) &stime[0] );

   sprintf( (char *) &key[0], "%d", newtype );
   setarr( RawPkts, (char *) &key[0], (char *) &Par.raw);
   
   Par.hdrtype = ( int )decode( pack.hdrtype );
   return (int) pkttype;
}