UINT32 com_read(unsigned char *buffer, UINT32 nLen) { UINT32 nReturn = SUCCESS; UINT32 i = 0; for(i = 0; i < nLen; i++) { if(SUCCESS != sci_read_tm(boot_uart_id, buffer+i, 1)) { nReturn = ERROR_READDATA_TIMEOUT; break; } } return nReturn; }
UINT32 com_read_tm(unsigned char *buffer, UINT32 nLen, UINT32 nTimeOut) { UINT32 nReturn = SUCCESS; UINT32 i = 0; for(i = 0; i < nLen; i++) { if(SUCCESS != sci_read_tm(p2p_uart_id, buffer+i, nTimeOut * 1000)) { nReturn = ERROR_READDATA_TIMEOUT; break; } } return nReturn; }
UINT32 api_com_monitor() { UINT8 i = 0; UINT8 ch = 0xff; UINT8 *comtest_command = "comtest"; INT32 comtest_command_len = STRLEN(comtest_command) - 1; UINT8 sync = 0; UINT32 timeout = 1000; OSAL_T_CTSK t_ctsk; if (COM_MONITOR_CHECK_STBID &g_com_detect_flag) { i = 0; while(sci_read_tm(SCI_FOR_RS232, &ch, timeout) == SUCCESS) { if((i <= comtest_command_len) && (comtest_command[i] == ch)) { timeout = 1000 * 100; sci_write(SCI_FOR_RS232, ch); i++; if (i > comtest_command_len) /* Is a comtest command string, wait for serial id trans */ { t_ctsk.stksz = 0x2000; t_ctsk.quantum = 10; t_ctsk.itskpri = OSAL_PRI_NORMAL; t_ctsk.name[0] = 'A'; t_ctsk.name[1] = 'S'; t_ctsk.name[2] = 'H'; t_ctsk.task = (FP)lib_ash_shell; if(g_com_ash_id != OSAL_INVALID_ID) { osal_task_delete(g_com_ash_id); } g_com_ash_id = osal_task_create(&t_ctsk); if (g_com_ash_id == OSAL_INVALID_ID) return 1; api_set_com_check_flag(COM_MONITOR_CHECK_PAUSE); break; } } else break; } } return 0; }
UINT32 com_send2back_tm(unsigned char * buffer, UINT32 nLen, UINT32 nTimeOut) { UINT32 i; INT8 tmp; for(i=0;i<nLen;i++) { sci_write(p2p_uart_id, buffer[i]); if(sci_read_tm(p2p_uart_id, &tmp, nTimeOut * 1000)!=SUCCESS) { return !SUCCESS; } if(tmp!= buffer[i]) { return !SUCCESS; } } return SUCCESS; }