diff --git a/src/ascii_cmd.c b/src/ascii_cmd.c index c6ff5d3..e8a2ac5 100644 --- a/src/ascii_cmd.c +++ b/src/ascii_cmd.c @@ -4,20 +4,20 @@ #include "lib.h" #include "ascii_cmd.h" -#define CMD_MATCHES(a) (ustrcmp(cmd, (unsigned char *)a) == 0) +#define CMD_MATCHES(a) (ustrcmp(cmd, (char *)a) == 0) typedef struct { const char *cmd; - void (*handler)(unsigned char *arg, RDSModulator* mod); + void (*handler)(char *arg, RDSModulator* mod); uint8_t cmd_length; } command_handler_t; -static void handle_ptyn(unsigned char *arg, RDSModulator* mod) { +static void handle_ptyn(char *arg, RDSModulator* mod) { arg[PTYN_LENGTH] = 0; set_rds_ptyn(mod->enc, xlat(arg)); } -static void handle_afch(unsigned char *arg, RDSModulator* mod) { +static void handle_afch(char *arg, RDSModulator* mod) { if(arg[0] == '\0') { memset(&(mod->enc->data[mod->enc->program].af), 0, sizeof(mod->enc->data[mod->enc->program].af)); return; @@ -53,52 +53,46 @@ static void handle_afch(unsigned char *arg, RDSModulator* mod) { memcpy(&(mod->enc->data[mod->enc->program].af), &new_af, sizeof(mod->enc->data[mod->enc->program].af)); } -static void handle_tps(unsigned char *arg, RDSModulator* mod) { +static void handle_tps(char *arg, RDSModulator* mod) { arg[PS_LENGTH * 2] = 0; set_rds_tps(mod->enc, xlat(arg)); } -static void handle_rt1(unsigned char *arg, RDSModulator* mod) { +static void handle_rt1(char *arg, RDSModulator* mod) { arg[RT_LENGTH * 2] = 0; set_rds_rt1(mod->enc, xlat(arg)); } -static void handle_pty(unsigned char *arg, RDSModulator* mod) { +static void handle_pty(char *arg, RDSModulator* mod) { arg[2] = 0; mod->enc->data[mod->enc->program].pty = strtoul((char *)arg, NULL, 10); } -static void handle_ecc(unsigned char *arg, RDSModulator* mod) { +static void handle_ecc(char *arg, RDSModulator* mod) { arg[2] = 0; mod->enc->data[mod->enc->program].ecc = strtoul((char *)arg, NULL, 16); } -static void handle_lic(unsigned char *arg, RDSModulator* mod) { - arg[2] = 0; +static void handle_lic(char *arg, RDSModulator* mod) { + arg[3] = 0; mod->enc->data[mod->enc->program].lic = strtoul((char *)arg, NULL, 16); } -static void handle_rtp(unsigned char *arg, RDSModulator* mod) { +static void handle_rtp(char *arg, RDSModulator* mod) { char tag_names[2][32]; uint8_t tags[6]; - if (sscanf((char *)arg, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu", - &tags[0], &tags[1], &tags[2], &tags[3], &tags[4], &tags[5]) == 6) { - set_rds_rtplus_tags(mod->enc, tags); - } else if (sscanf((char *)arg, "%31[^,],%hhu,%hhu,%31[^,],%hhu,%hhu", - tag_names[0], &tags[1], &tags[2], tag_names[1], &tags[4], &tags[5]) == 6) { - tags[0] = get_rtp_tag_id(tag_names[0]); - tags[3] = get_rtp_tag_id(tag_names[1]); + if (sscanf((char *)arg, "%hhu,%hhu,%hhu,%hhu,%hhu,%hhu", &tags[0], &tags[1], &tags[2], &tags[3], &tags[4], &tags[5]) == 6) { set_rds_rtplus_tags(mod->enc, tags); } } -static void handle_lps(unsigned char *arg, RDSModulator* mod) { +static void handle_lps(char *arg, RDSModulator* mod) { arg[LPS_LENGTH] = 0; set_rds_lps(mod->enc, arg); } -static void handle_pin(unsigned char *arg, RDSModulator* mod) { +static void handle_pin(char *arg, RDSModulator* mod) { uint8_t pin[3]; if (sscanf((char *)arg, "%hhu,%hhu,%hhu", &pin[0], &pin[1], &pin[2]) == 3) { for (int i = 0; i < 3; i++) { @@ -107,42 +101,42 @@ static void handle_pin(unsigned char *arg, RDSModulator* mod) { } } -static void handle_ps(unsigned char *arg, RDSModulator* mod) { +static void handle_ps(char *arg, RDSModulator* mod) { arg[PS_LENGTH * 2] = 0; set_rds_ps(mod->enc, xlat(arg)); } -static void handle_ct(unsigned char *arg, RDSModulator* mod) { +static void handle_ct(char *arg, RDSModulator* mod) { arg[2] = 1; mod->enc->data[mod->enc->program].ct = arg[0]; } -static void handle_di(unsigned char *arg, RDSModulator* mod) { +static void handle_di(char *arg, RDSModulator* mod) { arg[2] = 0; mod->enc->data[mod->enc->program].di = arg[0]; } -static void handle_tp(unsigned char *arg, RDSModulator* mod) { +static void handle_tp(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].tp = arg[0]; } -static void handle_ta(unsigned char *arg, RDSModulator* mod) { +static void handle_ta(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].ta = arg[0]; } -static void handle_ms(unsigned char *arg, RDSModulator* mod) { +static void handle_ms(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].ms = arg[0]; } -static void handle_pi(unsigned char *arg, RDSModulator* mod) { +static void handle_pi(char *arg, RDSModulator* mod) { arg[4] = 0; mod->enc->data[mod->enc->program].pi = strtoul((char *)arg, NULL, 16); } -static void handle_af(unsigned char *arg, RDSModulator* mod) { +static void handle_af(char *arg, RDSModulator* mod) { if (arg[0] == 'A' || arg[0] == 'B') { return; } @@ -178,7 +172,7 @@ static void handle_af(unsigned char *arg, RDSModulator* mod) { memcpy(&(mod->enc->data[mod->enc->program].af), &new_af, sizeof(mod->enc[mod->enc->program].data->af)); } -static void handle_g(unsigned char *arg, RDSModulator* mod) { +static void handle_g(char *arg, RDSModulator* mod) { uint16_t blocks[3]; int count = sscanf((char *)arg, "%4hx%4hx%4hx", &blocks[0], &blocks[1], &blocks[2]); if (count == 3) { @@ -189,37 +183,37 @@ static void handle_g(unsigned char *arg, RDSModulator* mod) { } } -static void handle_pinen(unsigned char *arg, RDSModulator* mod) { +static void handle_pinen(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].pin[0] = arg[0]; } -static void handle_rt1en(unsigned char *arg, RDSModulator* mod) { +static void handle_rt1en(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].rt1_enabled = arg[0]; } -static void handle_ptynen(unsigned char *arg, RDSModulator* mod) { +static void handle_ptynen(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].ptyn_enabled = strtoul((char *)arg, NULL, 10); } -static void handle_rtprun(unsigned char *arg, RDSModulator* mod) { +static void handle_rtprun(char *arg, RDSModulator* mod) { arg[1] = 0; set_rds_rtplus_flags(mod->enc, strtoul((char *)arg, NULL, 10)); } -static void handle_eccen(unsigned char *arg, RDSModulator* mod) { +static void handle_eccen(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].ecclic_enabled = arg[0]; } -static void handle_shortrt(unsigned char *arg, RDSModulator* mod) { +static void handle_shortrt(char *arg, RDSModulator* mod) { arg[1] = 0; mod->enc->data[mod->enc->program].shortrt = arg[0]; } -static void handle_program(unsigned char *arg, RDSModulator* mod) { +static void handle_program(char *arg, RDSModulator* mod) { int16_t program = strtol((char *)arg, NULL, 10)-1; if(program >= PROGRAMS) program = (PROGRAMS-1); if(program < 0) program = 0; @@ -228,28 +222,28 @@ static void handle_program(unsigned char *arg, RDSModulator* mod) { mod->enc->program = (uint8_t)program; } -static void handle_grpseq(unsigned char *arg, RDSModulator* mod) { +static void handle_grpseq(char *arg, RDSModulator* mod) { if (arg[0] == '\0') { memset(&(mod->enc->data[mod->enc->program].grp_sqc), 0, 24); - memcpy(&(mod->enc->data[mod->enc->program].grp_sqc), (unsigned char*)DEFAULT_GRPSQC, sizeof(DEFAULT_GRPSQC)); + memcpy(&(mod->enc->data[mod->enc->program].grp_sqc), (char*)DEFAULT_GRPSQC, sizeof(DEFAULT_GRPSQC)); } else { memset(&(mod->enc->data[mod->enc->program].grp_sqc), 0, 24); memcpy(&(mod->enc->data[mod->enc->program].grp_sqc), arg, 24); } } -static void handle_level(unsigned char *arg, RDSModulator* mod) { +static void handle_level(char *arg, RDSModulator* mod) { mod->params.level = strtoul((char *)arg, NULL, 10)/255.0f; } -static void handle_rdsgen(unsigned char *arg, RDSModulator* mod) { +static void handle_rdsgen(char *arg, RDSModulator* mod) { mod->params.rdsgen = strtoul((char *)arg, NULL, 10); } -static void handle_udg1(unsigned char *arg, RDSModulator* mod) { +static void handle_udg1(char *arg, RDSModulator* mod) { uint16_t blocks[8][3]; int sets = 0; - unsigned char *ptr = arg; + char *ptr = arg; while (sets < 8) { int count = sscanf((char *)ptr, "%4hx%4hx%4hx", @@ -275,10 +269,10 @@ static void handle_udg1(unsigned char *arg, RDSModulator* mod) { memcpy(&(mod->enc->data[mod->enc->program].udg1), &blocks, sets * sizeof(uint16_t[3])); mod->enc->data[mod->enc->program].udg1_len = sets; } -static void handle_udg2(unsigned char *arg, RDSModulator* mod) { +static void handle_udg2(char *arg, RDSModulator* mod) { uint16_t blocks[8][3]; int sets = 0; - unsigned char *ptr = arg; + char *ptr = arg; while (sets < 8) { int count = sscanf((char *)ptr, "%4hx%4hx%4hx", @@ -305,7 +299,7 @@ static void handle_udg2(unsigned char *arg, RDSModulator* mod) { mod->enc->data[mod->enc->program].udg2_len = sets; } -static void handle_init(unsigned char *arg, RDSModulator* mod) { +static void handle_init(char *arg, RDSModulator* mod) { (void)arg; set_rds_defaults(mod->enc, mod->enc->program); } @@ -369,9 +363,9 @@ static const command_handler_t commands_exact[] = { }; static bool process_command_table(const command_handler_t *table, int table_size, - unsigned char *cmd, unsigned char *arg, RDSModulator* mod) { + char *cmd, char *arg, RDSModulator* mod) { for (int i = 0; i < table_size; i++) { - if (ustrcmp(cmd, (unsigned char *)table[i].cmd) == 0) { + if (ustrcmp(cmd, (char *)table[i].cmd) == 0) { table[i].handler(arg, mod); return true; } @@ -379,8 +373,8 @@ static bool process_command_table(const command_handler_t *table, int table_size return false; } -void process_ascii_cmd(RDSModulator* mod, unsigned char *str) { - unsigned char *cmd, *arg; +void process_ascii_cmd(RDSModulator* mod, char *str) { + char *cmd, *arg; uint16_t cmd_len = _strnlen((const char*)str, CTL_BUFFER_SIZE); for(uint16_t i = 0; i < cmd_len; i++) { @@ -390,7 +384,7 @@ void process_ascii_cmd(RDSModulator* mod, unsigned char *str) { for (size_t i = 0; i < sizeof(commands_exact) / sizeof(command_handler_t); i++) { const command_handler_t *handler = &commands_exact[i]; if (cmd_len == handler->cmd_length && - ustrcmp(str, (unsigned char *)handler->cmd) == 0) { + ustrcmp(str, (char *)handler->cmd) == 0) { handler->handler(NULL, mod); return; } diff --git a/src/ascii_cmd.h b/src/ascii_cmd.h index cb1d39c..cb3fbc4 100644 --- a/src/ascii_cmd.h +++ b/src/ascii_cmd.h @@ -4,4 +4,4 @@ #define CTL_BUFFER_SIZE (CMD_BUFFER_SIZE * 2) #define READ_TIMEOUT_MS 100 -extern void process_ascii_cmd(RDSModulator* mod, unsigned char *str); \ No newline at end of file +extern void process_ascii_cmd(RDSModulator* mod, char *str); \ No newline at end of file diff --git a/src/control_pipe.c b/src/control_pipe.c index df66deb..91d8332 100644 --- a/src/control_pipe.c +++ b/src/control_pipe.c @@ -17,8 +17,8 @@ int open_control_pipe(char *filename) { } void poll_control_pipe(RDSModulator* mod) { - static unsigned char pipe_buf[CTL_BUFFER_SIZE]; - static unsigned char cmd_buf[CMD_BUFFER_SIZE]; + static char pipe_buf[CTL_BUFFER_SIZE]; + static char cmd_buf[CMD_BUFFER_SIZE]; int bytes_read; char *token; diff --git a/src/lib.c b/src/lib.c index e9625b9..d35b081 100644 --- a/src/lib.c +++ b/src/lib.c @@ -17,8 +17,8 @@ int _strnlen(const char *s, int maxlen) { return len; } -int ustrcmp(const unsigned char *s1, const unsigned char *s2) { - unsigned char c1, c2; +int ustrcmp(const char *s1, const char *s2) { + char c1, c2; do { c1 = *s1++; @@ -30,89 +30,6 @@ int ustrcmp(const unsigned char *s1, const unsigned char *s2) { return c1 - c2; } -static char *rtp_content_types[64] = { - "DUMMY_CLASS", - "ITEM.TITLE", - "ITEM.ALBUM", - "ITEM.TRACKNUMBER", - "ITEM.ARTIST", - "ITEM.COMPOSITION", - "ITEM.MOVEMENT", - "ITEM.CONDUCTOR", - "ITEM.COMPOSER", - "ITEM.BAND", - "ITEM.COMMENT", - "ITEM.GENRE", - "INFO.NEWS", - "INFO.NEWS.LOCAL", - "INFO.STOCKMARKET", - "INFO.SPORT", - "INFO.LOTTERY", - "INFO.HOROSCOPE", - "INFO.DAILY_DIVERSION", - "INFO.HEALTH", - "INFO.EVENT", - "INFO.SCENE", - "INFO.CINEMA", - "INFO.TV", - "INFO.DATE_TIME", - "INFO.WEATHER", - "INFO.TRAFFIC", - "INFO.ALARM", - "INFO.ADVERTISEMENT", - "INFO.URL", - "INFO.OTHER", - "STATIONNAME.SHORT", - "STATIONNAME.LONG", - "PROGRAMME.NOW", - "PROGRAMME.NEXT", - "PROGRAMME.PART", - "PROGRAMME.HOST", - "PROGRAMME.EDITORIAL_STAFF", - "PROGRAMME.FREQUENCY", - "PROGRAMME.HOMEPAGE", - "PROGRAMME.SUBCHANNEL", - "PHONE.HOTLINE", - "PHONE.STUDIO", - "PHONE.OTHER", - "SMS.STUDIO", - "SMS.OTHER", - "EMAIL.HOTLINE", - "EMAIL.STUDIO", - "EMAIL.OTHER", - "MMS.OTHER", - "CHAT", - "CHAT.CENTRE", - "VOTE.QUESTION", - "VOTE.CENTRE", - "RFU_1", - "RFU_2", - "PRIVATE_1", - "PRIVATE_2", - "PRIVATE_3", - "PLACE", - "APPOINTMENT", - "IDENTIFIER", - "PURCHASE", - "GET_DATA" -}; - -uint8_t get_rtp_tag_id(char *rtp_tag_name) { - uint8_t tag_id = 0; - for (uint8_t i = 0; i < 64; i++) { - if (strcmp(rtp_tag_name, rtp_content_types[i]) == 0) { - tag_id = i; - break; - } - } - return tag_id; -} - -char *get_rtp_tag_name(uint8_t rtp_tag) { - if (rtp_tag > 63) rtp_tag = 0; - return rtp_content_types[rtp_tag]; -} - static uint16_t offset_words[] = { 0x0FC, /* A */ 0x198, /* B */ @@ -189,8 +106,8 @@ uint8_t add_rds_af(RDSAFs *af_list, float freq) { } #define XLATSTRLEN 255 -unsigned char *xlat(unsigned char *str) { - static unsigned char new_str[XLATSTRLEN]; +char *xlat(char *str) { + static char new_str[XLATSTRLEN]; uint8_t i = 0; while (*str != 0 && i < XLATSTRLEN) { diff --git a/src/lib.h b/src/lib.h index 296d7fc..301852a 100644 --- a/src/lib.h +++ b/src/lib.h @@ -1,11 +1,8 @@ extern void msleep(unsigned long ms); extern int _strnlen(const char *s, int maxlen); -extern int ustrcmp(const unsigned char *s1, const unsigned char *s2); +extern int ustrcmp(const char *s1, const char *s2); -extern uint8_t get_rtp_tag_id(char *rtp_tag_name); -extern char *get_rtp_tag_name(uint8_t rtp_tag); extern void add_checkwords(uint16_t *blocks, uint8_t *bits); extern uint8_t add_rds_af(RDSAFs *af_list, float freq); -extern char *show_af_list(RDSAFs af_list); -extern unsigned char *xlat(unsigned char *str); \ No newline at end of file +extern char *xlat(char *str); \ No newline at end of file diff --git a/src/rds.c b/src/rds.c index b2a8097..4c6fd9d 100644 --- a/src/rds.c +++ b/src/rds.c @@ -528,7 +528,7 @@ void init_rds_encoder(RDSEncoder* enc) { } } -void set_rds_rt1(RDSEncoder* enc, unsigned char *rt1) { +void set_rds_rt1(RDSEncoder* enc, char *rt1) { uint8_t i = 0, len = 0; enc->state[enc->program].rt_update = 1; @@ -550,7 +550,7 @@ void set_rds_rt1(RDSEncoder* enc, unsigned char *rt1) { } } -void set_rds_ps(RDSEncoder* enc, unsigned char *ps) { +void set_rds_ps(RDSEncoder* enc, char *ps) { uint8_t len = 0; enc->state[enc->program].ps_update = 1; @@ -558,7 +558,7 @@ void set_rds_ps(RDSEncoder* enc, unsigned char *ps) { while (*ps != 0 && len < PS_LENGTH) enc->data[enc->program].ps[len++] = *ps++; } -void set_rds_tps(RDSEncoder* enc, unsigned char *tps) { +void set_rds_tps(RDSEncoder* enc, char *tps) { uint8_t len = 0; enc->state[enc->program].tps_update = 1; @@ -571,7 +571,7 @@ void set_rds_tps(RDSEncoder* enc, unsigned char *tps) { while (*tps != 0 && len < PS_LENGTH) enc->data[enc->program].tps[len++] = *tps++; } -void set_rds_lps(RDSEncoder* enc, unsigned char *lps) { +void set_rds_lps(RDSEncoder* enc, char *lps) { uint8_t i = 0, len = 0; enc->state[enc->program].lps_update = 1; @@ -614,7 +614,7 @@ void set_rds_rtplus_tags(RDSEncoder* enc, uint8_t *tags) { enc->rtpData[enc->program].enabled = 1; } -void set_rds_ptyn(RDSEncoder* enc, unsigned char *ptyn) { +void set_rds_ptyn(RDSEncoder* enc, char *ptyn) { uint8_t len = 0; enc->state[enc->program].ptyn_update = 1; diff --git a/src/rds.h b/src/rds.h index 59df249..fb01e79 100644 --- a/src/rds.h +++ b/src/rds.h @@ -44,13 +44,13 @@ typedef struct { uint8_t enabled : 1; uint16_t pi; uint8_t pin[4]; - unsigned char ps[8]; + char ps[8]; uint8_t ta : 1; uint8_t tp : 1; RDSAFs af; } RDSEONs; typedef struct { - unsigned char text[255]; + char text[255]; uint8_t destination : 4; } RDSMessage; typedef struct { @@ -62,7 +62,7 @@ typedef struct { } RDSMessages; typedef struct { - unsigned char command[35]; + char command[35]; uint8_t days : 7; // let's say that here it will be stored by bits, so 0b1000000 is monday and so on uint8_t pty: 5; uint16_t execution_hours[12]; @@ -89,14 +89,14 @@ typedef struct { uint8_t ms : 1; uint8_t di : 4; - unsigned char ps[PS_LENGTH]; - unsigned char tps[PS_LENGTH]; + char ps[PS_LENGTH]; + char tps[PS_LENGTH]; uint8_t eqtext1 : 1; uint8_t dps1_enabled : 1; uint8_t dps2_enabled : 1; - unsigned char dps1[255]; - unsigned char dps2[255]; + char dps1[255]; + char dps2[255]; uint8_t dps1_mode : 2; uint8_t dps2_mode : 2; uint8_t dps1_numberofrepeats : 7; @@ -113,22 +113,22 @@ typedef struct { uint8_t rt_type : 2; uint8_t rt_text_timeout; uint8_t rt_switching_period; - unsigned char default_rt[RT_LENGTH]; - unsigned char rt1[RT_LENGTH]; - unsigned char rt2[RT_LENGTH]; + char default_rt[RT_LENGTH]; + char rt1[RT_LENGTH]; + char rt2[RT_LENGTH]; uint8_t ptyn_enabled : 1; - unsigned char ptyn[PTYN_LENGTH]; + char ptyn[PTYN_LENGTH]; RDSAFs af; uint8_t ct : 1; - unsigned char lps[LPS_LENGTH]; + char lps[LPS_LENGTH]; uint8_t pin[4]; - unsigned char grp_sqc[24]; + char grp_sqc[24]; uint8_t udg1_len : 4; uint8_t udg2_len : 4; @@ -145,25 +145,25 @@ typedef struct { uint8_t ps_update : 1; uint8_t tps_update : 1; - unsigned char ps_text[PS_LENGTH]; - unsigned char tps_text[PS_LENGTH]; + char ps_text[PS_LENGTH]; + char tps_text[PS_LENGTH]; uint8_t ps_csegment : 4; - unsigned char dps1_text[255]; - unsigned char dps1_nexttext[127]; + char dps1_text[255]; + char dps1_nexttext[127]; - unsigned char rt_text[RT_LENGTH]; + char rt_text[RT_LENGTH]; uint8_t rt_state : 5; uint8_t rt_update : 1; uint8_t rt_ab : 1; uint8_t rt_segments : 5; - unsigned char ptyn_text[RT_LENGTH]; + char ptyn_text[RT_LENGTH]; uint8_t ptyn_state : 1; uint8_t ptyn_update : 1; uint8_t ptyn_ab : 1; - unsigned char lps_text[RT_LENGTH]; + char lps_text[RT_LENGTH]; uint8_t lps_state : 5; uint8_t lps_update : 1; uint8_t lps_segments : 5; @@ -278,12 +278,12 @@ int rdssaved(); void set_rds_defaults(RDSEncoder* enc, uint8_t program); void init_rds_encoder(RDSEncoder* enc); void get_rds_bits(RDSEncoder* enc, uint8_t *bits); -void set_rds_rt1(RDSEncoder* enc, unsigned char *rt1); -void set_rds_ps(RDSEncoder* enc, unsigned char *ps); -void set_rds_tps(RDSEncoder* enc, unsigned char *tps); -void set_rds_lps(RDSEncoder* enc, unsigned char *lps); +void set_rds_rt1(RDSEncoder* enc, char *rt1); +void set_rds_ps(RDSEncoder* enc, char *ps); +void set_rds_tps(RDSEncoder* enc, char *tps); +void set_rds_lps(RDSEncoder* enc, char *lps); void set_rds_rtplus_flags(RDSEncoder* enc, uint8_t flags); void set_rds_rtplus_tags(RDSEncoder* enc, uint8_t *tags); -void set_rds_ptyn(RDSEncoder* enc, unsigned char *ptyn); +void set_rds_ptyn(RDSEncoder* enc, char *ptyn); #endif diff --git a/src/rds95.c b/src/rds95.c index db463bc..a007889 100644 --- a/src/rds95.c +++ b/src/rds95.c @@ -31,9 +31,12 @@ static void *control_pipe_worker(void* modulator) { pthread_exit(NULL); } +static void show_version() { + printf("rds95 (a RDS encoder by radio95) version 1.0"); +} + static void show_help(char *name) { printf( - "rds95 (a RDS encoder by radio95) version %.1f\n" "\n" "Usage: %s [options]\n" "\n" @@ -46,6 +49,8 @@ static void show_help(char *name) { } int main(int argc, char **argv) { + show_version(); + char control_pipe[51] = "\0"; pa_simple *device;