FreeCalypso > hg > freecalypso-reveng
view frbl/reconst/command.c @ 325:7df08926a4e7
frbl2test: better message for Hello response
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 06 Mar 2020 01:59:20 +0000 |
parents | 24d7d7875ee9 |
children | a4b6b4e389b9 |
line wrap: on
line source
#include "main/sys_types.h" #include "command.h" long com_analyze_request(SYS_UWORD8 *request_received, t_com_request *request) { SYS_WORD32 sp8; long sp12 = COM_SUCCESS; SYS_UWORD32 sp16, sp20; SYS_UWORD8 sp24; SYS_UWORD16 *sp28; SYS_UWORD16 sp32, sp34, sp36, sp38, sp40, sp42, sp44, sp46; sp20 = *request_received++; COM_COMMAND_WORD(request) = *request_received++; sp16 = 1; switch (COM_COMMAND_WORD(request)) { case COM_READ_PARAMETERS: /* 0x26 */ sp16 += 2; sp34 = *request_received++; sp32 = *request_received++; COM_READ_PARAMS_OFFSET(request) = (sp34 << 8) + sp32; sp16 += 1; sp24 = *request_received++; COM_NUMBER_OF_PARAMS_READ(request) = sp24; if (sp24 > COM_MAX_NUMBER_OF_16BITS_DATA) sp12 = COM_PARAMETER_ERROR; break; case COM_WRITE_PARAMETERS: /* 0x7a */ sp16 += 2; sp34 = *request_received++; sp32 = *request_received++; COM_WRITTEN_PARAMS_OFFSET(request) = (sp34 << 8) + sp32; sp16 += 1; sp24 = *request_received++; COM_NUMBER_OF_PARAMS_WRITTEN(request) = sp24; if (sp24 > COM_MAX_NUMBER_OF_16BITS_DATA) { sp12 = COM_PARAMETER_ERROR; break; } sp28 = COM_WRITTEN_PARAMS_LIST_ADDRESS(request); for (sp8 = 0; sp8 < sp24; sp8++) { sp38 = *request_received++; sp36 = *request_received++; *sp28++ = (sp38 << 8) + sp36; sp16 += 2; } break; case COM_SEND_RUN_ADDRESS: /* 0x11e */ sp16 += 2; sp40 = *request_received++; sp42 = *request_received++; COM_ADDRESS_MSB(request) = (sp40 << 8) + sp42; sp16 += 2; sp44 = *request_received++; sp46 = *request_received++; COM_ADDRESS_LSB(request) = (sp44 << 8) + sp46; break; case COM_GET_MONITOR_ID: case COM_GET_FLASH_ID: case COM_GET_CHIP_ID: case COM_GET_BOARD_ID: case COM_ERASE_FLASH: case COM_WRITE_DATA: case COM_START_APPLICATION: case COM_LOAD_APPLICATION: break; default: sp12 = COM_COMMAND_UNKNOWN; } if (sp20 != sp16) sp12 = COM_PARAMETER_ERROR; return sp12; } long com_build_confirmation(t_com_confirmation *confirmation, SYS_UWORD8 *confirmation_to_send) { }