Changeset 2724:0a95ae49bce7 in roaraudio


Ignore:
Timestamp:
09/16/09 12:26:12 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

crc depends on block type

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/include/rdtcs.h

    r2722 r2724  
    6363int rdtcs_send_stream_rds_group  (int id, struct roar_stream_server *  ss); 
    6464 
    65 uint16_t rdtcs_rds_crc_calc      (uint16_t data); 
     65uint16_t rdtcs_rds_crc_calc      (uint16_t data, int block); 
    6666 
    6767#endif 
  • roard/rdtcs.c

    r2722 r2724  
    8686 char out[RDTCS_RDS_GROUP_LEN]; 
    8787 char * c; 
     88 int      block[4] = {RDTCS_RDS_BLOCK_A, RDTCS_RDS_BLOCK_B, RDTCS_RDS_BLOCK_C0, RDTCS_RDS_BLOCK_D}; 
    8889 uint16_t data[4]; 
    8990 uint16_t crc; 
     
    103104 fill = 0; 
    104105 for (i = 0; i < 4; i++) { 
    105   s |= data[i] << fill; 
     106  // data is 16 bit long 
     107  s |= data[i] << (fill & 0xFFFF); 
    106108  fill += 16; 
    107109 
    108   crc = rdtcs_rds_crc_calc(data[i]); 
     110  crc = rdtcs_rds_crc_calc(data[i], block[i]); 
    109111 
    110   s |= crc << fill; 
     112  // CRC is 10 bit long 
     113  s |= crc << (fill & 0x03FF); 
    111114  fill += 10; 
    112115 
     116  // shift all complet bytes we allready have out 
    113117  while (fill >= 8) { 
    114118   *c     = s & 0xFF; 
     
    122126} 
    123127 
    124 uint16_t rdtcs_rds_crc_calc      (uint16_t data) { 
     128uint16_t rdtcs_rds_crc_calc      (uint16_t data, int block) { 
    125129 return 0xAAAA; 
    126130} 
Note: See TracChangeset for help on using the changeset viewer.