void odp_uds_printdata_Buffer(UBaseType_t msgType, void *data, printChar_cbf printchar) { extern QueueHandle_t inputQueue; ODPBuffer **doublePtr; ODPBuffer *myUDSBuffer; doublePtr = data; myUDSBuffer = *doublePtr; int i; for (i = 0; i < myUDSBuffer->len; i++) { printser_uint8ToHex(myUDSBuffer->data[i]); if ((i % 8) == 0 && i > 0 && i < myUDSBuffer->len - 1) { printLF(); } } if (!((i % 8) == 0 && i > 0 && i < myUDSBuffer->len - 1)) { printLF(); } printEOT(); /* clear the buffer */ myUDSBuffer->len = 0; /* release the input queue */ if (pdPASS != sendMsg(MSG_SERIAL_RELEASE, inputQueue, NULL)) { DEBUGPRINT("FATAL ERROR: input queue is full!\n", "a"); } }
void sendCPUInfo() { printLF(); printser_string("CPU ID: 0x"); printser_uint32ToHex(SCB->CPUID); }
void sendMemLoc(uint32_t * ptr) { printLF(); printser_string("Address [0x"); printser_uint32ToHex((uint32_t) ptr); printser_string("] = Value 0x"); printser_uint32ToHex(&ptr); }
void odp_canraw_printParam(UBaseType_t msgType, void *data, printChar_cbf printchar) { param_data *args = data; extern bus_paramPrint actBus_paramPrint; if (args->args[ARG_CMD] == PARAM_INFO && args->args[ARG_VALUE_1] == VALUE_PARAM_INFO_VERSION) { printser_string("0 - Raw CAN"); printLF(); printEOT(); } else { createCommandResultMsg(FBID_PROTOCOL_GENERIC, FBID_PROTOCOL_GENERIC, 0, ERR_CODE_OS_UNKNOWN_COMMAND_TEXT); } }
void print_telegram(UBaseType_t msgType, void *data, printChar_cbf printchar) { static data_packet *dp; dp = data; printser_string("# "); printser_int(dp->timestamp * portTICK_PERIOD_MS, 10); printser_string(" 0x"); printser_int(dp->recv, 16); printser_string(" 0x"); printser_int(dp->err, 16); printser_string(" "); printser_int(dp->len, 10); printser_string(" "); int i; for (i = 0; i < dp->len; i++) { printser_uint8ToHex(dp->data[i]); printser_string(" "); } printLF(); }
void odp_canraw_recvdata(data_packet * p, UBaseType_t callFromISR) { extern print_cbf printdata_CAN; extern printChar_cbf printChar; extern protocolConfigPtr actProtConfigPtr; struct CanRawConfig *protocolConfig; short ByteCnt; if (callFromISR) xTickNew = (uint16_t) xTaskGetTickCountFromISR(); else xTickNew = (uint16_t) xTaskGetTickCount(); if (xTickNew < xTickOld) // check for xTick overflow xTickOld = 0; if (xTickCurrent >= 59999) // limit timestamp to 0-59999 tick (ms) xTickCurrent = 0; xTickCurrent = xTickCurrent + (xTickNew - xTickOld); xTickOld = xTickNew; // set latest value to xTickOld for next duration p->timestamp = xTickCurrent; protocolConfig = actProtConfigPtr; if (protocolConfig != NULL) { if (protocolConfig->showBusTransfer == 1) { //normal output MsgData *msg; extern QueueHandle_t protocolQueue; if (NULL != (msg = createDataMsg(p))) { UBaseType_t res = 0; if (callFromISR) { res = sendMsgFromISR(MSG_BUS_RECV, protocolQueue, msg); } else { res = sendMsg(MSG_BUS_RECV, protocolQueue, msg); } if (res != pdPASS) { disposeMsg(msg); DEBUGPRINT("FATAL ERROR: protocol queue is full!\n", 'a'); } } else { DEBUGPRINT("FATAL ERROR: Out of Heap space!l\n", 'a'); } } if (protocolConfig->showBusTransfer == 2) { //normal output, but straight from the ISR printdata_CAN(MSG_BUS_RECV, p, printChar); } if (protocolConfig->showBusTransfer == 3) { // Lawicel format: Estimated out of http://lxr.free-electrons.com/source/drivers/net/can/slcan.c line 110 cc. if (p->recv & 0x80000000) { // Bit 32 set, so it's an extended CAN ID printser_string("T"); printser_uint32ToHex(p->recv & 0x1FFFFFFF); } else { printser_string("t"); printser_int((p->recv & 0x700) >> 8, 10); printser_uint8ToHex(p->recv & 0x00FF); } printser_int(p->len, 10); ByteCnt = 0; while (ByteCnt != p->len) { printser_uint8ToHex(p->data[ByteCnt]); ByteCnt++; } if (p->err == 0x01) printser_string("FFFF"); // if error occurs set timestamp to 0xFFFF else printser_uint16ToHex(p->timestamp * portTICK_PERIOD_MS & 0xFFFF); //reduce down to 16 bit = 65536 ms = ~ 1 min printLF(); } if (protocolConfig->showBusTransfer == 4) { printser_uint8ToRaw(255); //startbyte printser_uint8ToRaw((p->len & 0xF) | // bit 0-3: DLC ((p->err & 3) << 4) | //bit 4-5 : Error flag (((p->recv & 0x80000000) ? 1 : 0) << 5) //bit 6: Extended CAN ID ); //Status flag printser_uint16ToRawCoded(p->timestamp * portTICK_PERIOD_MS & 0xFFFF); //reduce down to 16 bit = 65536 ms = ~ 1 min if ((p->recv & 0x80000000)) { // Bit 32 set, so it's an exended CAN ID printser_uint32ToRawCoded(p->recv & 0x1FFFFFFF); } else { printser_uint16ToRawCoded(p->recv & 0x1FFFFFFF); } int i; for (i = 0; i < p->len; i++) { printser_uint8ToRawCoded(p->data[i]); } } } }
/*-----------------------------------------------------------*/ void bus_param_can_generic_Print(UBaseType_t msgType, void *data, printChar_cbf printchar) { param_data *args = data; uint8_t FiltCntr; DEBUGPRINT("can Parameter receiced %ld-%ld\n", args->args[ARG_RECV], args->args[ARG_CMD]); if (args->args[ARG_CMD] == PARAM_INFO) { CAN_GetCanConfig(canConfig); switch (args->args[ARG_VALUE_1]) { case VALUE_PARAM_INFO_VERSION: printser_string("CAN Bus"); printLF(); printEOT(); break; case VALUE_PARAM_INFO_BUS_MODE: switch (canConfig->mode) { case VALUE_BUS_MODE_SILENT: printser_string("0 - CAN Transceiver in 'Silent Mode'"); printLF(); break; case VALUE_BUS_MODE_LOOP_BACK: printser_string("1 - CAN Transceiver in 'Loop Back Mode'"); printLF(); break; case VALUE_BUS_MODE_LOOP_BACK_WITH_SILENT: printser_string ("2 - CAN Transceiver in 'Loop Back combined with Silent Mode'"); printLF(); break; case VALUE_BUS_MODE_NORMAL: printser_string("3 - CAN Transceiver in 'Normal Mode'"); printLF(); break; } switch (canConfig->state) { case STATE_REQUEST_CAN_ERROR_ACTIVE: printser_string("0 - Bus Active"); printLF(); break; case STATE_REQUEST_CAN_ERROR_WARNING: printser_string("1 - Bus Active, a few errors"); printLF(); break; case STATE_REQUEST_CAN_ERROR_PASSIVE: printser_string("2 - Bus Passive, many errors"); printLF(); break; case STATE_REQUEST_CAN_BUS_OFF: printser_string("3 - Bus Off, too many errors"); printLF(); break; case STATE_REQUEST_CAN_STOPPED: printser_string("4 - Bus offline"); printLF(); break; case STATE_REQUEST_CAN_SLEEPING: printser_string("5 - Bus sleeping"); printLF(); break; case STATE_REQUEST_CAN_UNKNOWN: printser_string("6 - no feedback from device"); printLF(); break; } printEOT(); break; case VALUE_PARAM_INFO_BUS_CONFIG: switch (canConfig->busConfig) { case VALUE_BUS_CONFIG_11bit_125kbit: printser_string("1 = ISO 15765-4, CAN 11bit ID/125kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_11bit_250kbit: printser_string("2 = ISO 15765-4, CAN 11bit ID/250kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_11bit_500kbit: printser_string("3 = ISO 15765-4, CAN 11bit ID/500kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_11bit_1000kbit: printser_string("4 - ISO 15765-4, CAN 11bit ID/1000kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_29bit_125kbit: printser_string("5 - ISO 15765-4, CAN 29bit ID/125kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_29bit_250kbit: printser_string("6 - ISO 15765-4, CAN 29bit ID/250kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_29bit_500kbit: printser_string("7 - ISO 15765-4, CAN 29bit ID/500kBaud"); printLF(); printEOT(); break; case VALUE_BUS_CONFIG_29bit_1000kbit: printser_string("8 - ISO 15765-4, CAN 29bit ID/1000kBaud"); printLF(); printEOT(); break; } break; case VALUE_PARAM_INFO_BUS_ERROR: if (VALUE_PARAM_INFO_BUS_ERROR_READ == args->args[ARG_VALUE_2]) { printser_int(bus_rx_count_can(), 10); printser_string(" "); printser_int(bus_rx_error_can(), 10); printser_string(" "); printser_int(bus_rec_can(), 10); printser_string(" "); printser_int(bus_tx_count_can(), 10); printser_string(" "); printser_int(bus_tx_error_can(), 10); printser_string(" "); printser_int(bus_rec_can(), 10); printser_string(" "); printser_int(bus_tec_can(), 10); printser_string(" "); printser_int(bus_busoff_error_can(), 10); printser_string(" "); printser_int(bus_warning_error_can(), 10); printser_string(" "); printser_int(bus_passive_error_can(), 10); } else if (VALUE_PARAM_INFO_BUS_ERROR_DEL == args->args[ARG_VALUE_2]) { /* delete counters if parameter is requested with option "1" */ bus_clear_rx_error_can(); bus_clear_tx_error_can(); bus_clear_rx_count_can(); bus_clear_tx_count_can(); } else printser_string("Missing parameter!"); printLF(); printEOT(); break; case VALUE_PARAM_INFO_Can11FilterID: for (FiltCntr = 0; FiltCntr < MAXCANFILTER; FiltCntr++) { printser_string("0x"); printser_int(CAN_GetFilterReg16(FiltCntr, 1, 0), 16); printser_string(" 0x"); printser_int(CAN_GetFilterReg16(FiltCntr, 1, 1), 16); printser_string(" 0x"); printser_int(CAN_GetFilterReg16(FiltCntr, 2, 0), 16); printser_string(" 0x"); printser_int(CAN_GetFilterReg16(FiltCntr, 2, 1), 16); printLF(); } printLF(); printEOT(); break; case VALUE_PARAM_INFO_Can29FilterID: for (FiltCntr = 0; FiltCntr < MAXCANFILTER; FiltCntr++) { printser_string("0x"); printser_int(CAN_GetFilterReg32(FiltCntr, 1), 16); printser_string(" 0x"); printser_int(CAN_GetFilterReg32(FiltCntr, 2), 16); printLF(); } printLF(); printEOT(); break; default: evalResult(FBID_BUS_GENERIC, ERR_CODE_OS_UNKNOWN_COMMAND, 0, ERR_CODE_OS_UNKNOWN_COMMAND_TEXT); break; } } else { evalResult(FBID_BUS_GENERIC, ERR_CODE_OS_UNKNOWN_COMMAND, 0, ERR_CODE_OS_UNKNOWN_COMMAND_TEXT); } }