Commit f7f9850d authored by Georgi Chorbadzhiyski's avatar Georgi Chorbadzhiyski

dvblastctl: Cleanup command handling.

There should be no functional changes with this patch. It is
just a code cleanup.
Signed-off-by: default avatarGeorgi Chorbadzhiyski <gf@unixsol.org>
parent 1e81d443
...@@ -328,43 +328,45 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -328,43 +328,45 @@ int main( int i_argc, char **ppsz_argv )
sun_server.sun_path[sizeof(sun_server.sun_path) - 1] = '\0'; sun_server.sun_path[sizeof(sun_server.sun_path) - 1] = '\0';
p_buffer[0] = COMM_HEADER_MAGIC; p_buffer[0] = COMM_HEADER_MAGIC;
p_buffer[1] = opt.cmd;
p_buffer[2] = 0; p_buffer[2] = 0;
p_buffer[3] = 0; p_buffer[3] = 0;
i_size = COMM_HEADER_SIZE; i_size = COMM_HEADER_SIZE;
if ( !strcmp(ppsz_argv[optind], "reload") ) /* Handle commands that send parameters */
p_buffer[1] = CMD_RELOAD; switch ( opt.cmd )
else if ( !strcmp(ppsz_argv[optind], "shutdown") ) {
p_buffer[1] = CMD_SHUTDOWN; case CMD_INVALID:
else if ( !strcmp(ppsz_argv[optind], "fe_status") ) case CMD_RELOAD:
p_buffer[1] = CMD_FRONTEND_STATUS; case CMD_SHUTDOWN:
else if ( !strcmp(ppsz_argv[optind], "get_pat") ) case CMD_FRONTEND_STATUS:
p_buffer[1] = CMD_GET_PAT; case CMD_MMI_STATUS:
else if ( !strcmp(ppsz_argv[optind], "get_cat") ) case CMD_MMI_SEND:
p_buffer[1] = CMD_GET_CAT; case CMD_GET_PAT:
else if ( !strcmp(ppsz_argv[optind], "get_nit") ) case CMD_GET_CAT:
p_buffer[1] = CMD_GET_NIT; case CMD_GET_NIT:
else if ( !strcmp(ppsz_argv[optind], "get_sdt") ) case CMD_GET_SDT:
p_buffer[1] = CMD_GET_SDT; case CMD_GET_PIDS:
else if ( !strcmp(ppsz_argv[optind], "get_pmt") ) { /* These commands need no special handling because they have no parameters */
break;
case CMD_GET_PMT:
{
uint16_t i_sid = atoi(p_arg1); uint16_t i_sid = atoi(p_arg1);
p_buffer[1] = CMD_GET_PMT;
i_size = COMM_HEADER_SIZE + 2; i_size = COMM_HEADER_SIZE + 2;
p_data[0] = (uint8_t)((i_sid >> 8) & 0xff); p_data[0] = (uint8_t)((i_sid >> 8) & 0xff);
p_data[1] = (uint8_t)(i_sid & 0xff); p_data[1] = (uint8_t)(i_sid & 0xff);
} else if ( !strcmp(ppsz_argv[optind], "get_pids") ) break;
p_buffer[1] = CMD_GET_PIDS; }
else if ( !strcmp(ppsz_argv[optind], "get_pid") ) { case CMD_GET_PID:
{
i_pid = (uint16_t)atoi(p_arg1); i_pid = (uint16_t)atoi(p_arg1);
p_buffer[1] = CMD_GET_PID;
i_size = COMM_HEADER_SIZE + 2; i_size = COMM_HEADER_SIZE + 2;
p_data[0] = (uint8_t)((i_pid >> 8) & 0xff); p_data[0] = (uint8_t)((i_pid >> 8) & 0xff);
p_data[1] = (uint8_t)(i_pid & 0xff); p_data[1] = (uint8_t)(i_pid & 0xff);
} else if ( !strcmp(ppsz_argv[optind], "mmi_status") ) }
p_buffer[1] = CMD_MMI_STATUS; case CMD_MMI_SEND_TEXT:
else if ( !strcmp(ppsz_argv[optind], "mmi_send_text") ) { {
struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4]; struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4];
p_buffer[1] = CMD_MMI_SEND_TEXT;
p_cmd->i_slot = atoi(p_arg1); p_cmd->i_slot = atoi(p_arg1);
en50221_mmi_object_t object; en50221_mmi_object_t object;
...@@ -392,30 +394,26 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -392,30 +394,26 @@ int main( int i_argc, char **ppsz_argv )
i_size += COMM_HEADER_SIZE i_size += COMM_HEADER_SIZE
+ ((void *)&p_cmd->object - (void *)p_cmd); + ((void *)&p_cmd->object - (void *)p_cmd);
} }
else if ( !strcmp(ppsz_argv[optind], "mmi_send_choice") ) { case CMD_MMI_SEND_CHOICE:
{
struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4]; struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4];
p_buffer[1] = CMD_MMI_SEND_CHOICE;
p_cmd->i_slot = atoi(p_arg1); p_cmd->i_slot = atoi(p_arg1);
i_size = COMM_HEADER_SIZE + sizeof(struct cmd_mmi_send); i_size = COMM_HEADER_SIZE + sizeof(struct cmd_mmi_send);
p_cmd->object.i_object_type = EN50221_MMI_MENU_ANSW; p_cmd->object.i_object_type = EN50221_MMI_MENU_ANSW;
p_cmd->object.u.menu_answ.i_choice = atoi(p_arg2); p_cmd->object.u.menu_answ.i_choice = atoi(p_arg2);
} }
else case CMD_MMI_SLOT_STATUS:
case CMD_MMI_OPEN:
case CMD_MMI_CLOSE:
case CMD_MMI_RECV:
{ {
p_buffer[4] = atoi(p_arg1); p_buffer[4] = atoi(p_arg1);
i_size = COMM_HEADER_SIZE + 1; i_size = COMM_HEADER_SIZE + 1;
}
if ( !strcmp(ppsz_argv[optind], "mmi_slot_status") )
p_buffer[1] = CMD_MMI_SLOT_STATUS;
else if ( !strcmp(ppsz_argv[optind], "mmi_open") )
p_buffer[1] = CMD_MMI_OPEN;
else if ( !strcmp(ppsz_argv[optind], "mmi_close") )
p_buffer[1] = CMD_MMI_CLOSE;
else if ( !strcmp(ppsz_argv[optind], "mmi_get") )
p_buffer[1] = CMD_MMI_RECV;
} }
/* Send command and receive answer */
if ( sendto( i_fd, p_buffer, i_size, 0, (struct sockaddr *)&sun_server, if ( sendto( i_fd, p_buffer, i_size, 0, (struct sockaddr *)&sun_server,
SUN_LEN(&sun_server) ) < 0 ) SUN_LEN(&sun_server) ) < 0 )
{ {
...@@ -449,6 +447,7 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -449,6 +447,7 @@ int main( int i_argc, char **ppsz_argv )
exit(255); exit(255);
} }
/* Process answer */
if ( p_buffer[0] != COMM_HEADER_MAGIC ) if ( p_buffer[0] != COMM_HEADER_MAGIC )
{ {
msg_Err( NULL, "wrong protocol version 0x%x", p_buffer[0] ); msg_Err( NULL, "wrong protocol version 0x%x", p_buffer[0] );
...@@ -457,7 +456,8 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -457,7 +456,8 @@ int main( int i_argc, char **ppsz_argv )
now = mdate(); now = mdate();
switch ( p_buffer[1] ) ctl_cmd_answer_t c_answer = p_buffer[1];
switch ( c_answer )
{ {
case RET_OK: case RET_OK:
exit(0); exit(0);
...@@ -491,12 +491,13 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -491,12 +491,13 @@ int main( int i_argc, char **ppsz_argv )
unsigned int i_flat_data_size = i_size - COMM_HEADER_SIZE; unsigned int i_flat_data_size = i_size - COMM_HEADER_SIZE;
uint8_t **pp_sections = psi_unpack_sections( p_flat_data, i_flat_data_size ); uint8_t **pp_sections = psi_unpack_sections( p_flat_data, i_flat_data_size );
switch( p_buffer[1] ) switch( c_answer )
{ {
case RET_PAT: pat_table_print( pp_sections, psi_print, NULL, i_print_type ); break; case RET_PAT: pat_table_print( pp_sections, psi_print, NULL, i_print_type ); break;
case RET_CAT: cat_table_print( pp_sections, psi_print, NULL, i_print_type ); break; case RET_CAT: cat_table_print( pp_sections, psi_print, NULL, i_print_type ); break;
case RET_NIT: nit_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break; case RET_NIT: nit_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break;
case RET_SDT: sdt_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break; case RET_SDT: sdt_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break;
default: break; /* Can't happen */
} }
psi_table_free( pp_sections ); psi_table_free( pp_sections );
...@@ -798,7 +799,7 @@ int main( int i_argc, char **ppsz_argv ) ...@@ -798,7 +799,7 @@ int main( int i_argc, char **ppsz_argv )
} }
default: default:
msg_Err( NULL, "wrong answer %u", p_buffer[1] ); msg_Err( NULL, "wrong answer %u", c_answer );
exit(255); exit(255);
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment