Changeset 2722:d751d98911be in roaraudio
- Timestamp:
- 09/15/09 01:51:32 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/include/rdtcs.h
r2721 r2722 41 41 #define RDTCS_RDS_BLOCK_D 5 42 42 43 #define RDTCS_RDS_GROUP_LEN ((4*(16+10))/8) 44 43 45 struct { 44 46 int inited; … … 58 60 int rdtcs_send_stream (int id); 59 61 62 int rdtcs_send_stream_rds (int id, struct roar_stream_server * ss); 63 int rdtcs_send_stream_rds_group (int id, struct roar_stream_server * ss); 64 65 uint16_t rdtcs_rds_crc_calc (uint16_t data); 66 60 67 #endif 61 68 -
roard/rdtcs.c
r2721 r2722 52 52 53 53 int rdtcs_send_stream (int id) { 54 return -1; 54 struct roar_stream * s; 55 struct roar_stream_server * ss; 56 57 if ( g_streams[id] == NULL ) 58 return -1; 59 60 ROAR_DBG("rdtcs_send_stream(id=%i) = ?", id); 61 62 s = ROAR_STREAM(ss = g_streams[id]); 63 64 switch (s->info.codec) { 65 case ROAR_CODEC_RDS: 66 return rdtcs_send_stream_rds(id, ss); 67 break; 68 default: 69 streams_delete(id); 70 return -1; 71 } 72 73 return 0; 74 } 75 76 int rdtcs_send_stream_rds (int id, struct roar_stream_server * ss) { 77 struct roar_stream * s; 78 79 s = ROAR_STREAM(ss); 80 81 82 return rdtcs_send_stream_rds_group(id, ss); 83 } 84 85 int rdtcs_send_stream_rds_group (int id, struct roar_stream_server * ss) { 86 char out[RDTCS_RDS_GROUP_LEN]; 87 char * c; 88 uint16_t data[4]; 89 uint16_t crc; 90 register uint32_t s; 91 int i, fill; 92 93 // TODO: think about byte order! 94 95 for (i = 0; i < 4; i++) data[i] = 0; 96 97 data[0] = g_rdtcs.rds.pi; 98 99 memset(out, 0, sizeof(out)); 100 101 c = out; 102 s = 0; 103 fill = 0; 104 for (i = 0; i < 4; i++) { 105 s |= data[i] << fill; 106 fill += 16; 107 108 crc = rdtcs_rds_crc_calc(data[i]); 109 110 s |= crc << fill; 111 fill += 10; 112 113 while (fill >= 8) { 114 *c = s & 0xFF; 115 c++; 116 s >>= 8; 117 fill -= 8; 118 } 119 } 120 121 return stream_vio_s_write(ss, out, RDTCS_RDS_GROUP_LEN) == RDTCS_RDS_GROUP_LEN ? 0 : -1; 122 } 123 124 uint16_t rdtcs_rds_crc_calc (uint16_t data) { 125 return 0xAAAA; 55 126 } 56 127
Note: See TracChangeset
for help on using the changeset viewer.