示例#1
0
文件: odp_uds.c 项目: fkuppens/oobd
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");
    }

}
示例#2
0
文件: mc_serial.c 项目: fkuppens/oobd
		void sendCPUInfo() {

			printLF();

			printser_string("CPU ID: 0x");

			printser_uint32ToHex(SCB->CPUID);

		}
示例#3
0
文件: mc_serial.c 项目: fkuppens/oobd
		void sendMemLoc(uint32_t * ptr) {

			printLF();

			printser_string("Address [0x");

			printser_uint32ToHex((uint32_t) ptr);

			printser_string("] = Value 0x");

			printser_uint32ToHex(&ptr);

		}
示例#4
0
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);
    }
}
示例#5
0
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();
}
示例#6
0
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]);
	    }
	}
    }
}
示例#7
0
/*-----------------------------------------------------------*/
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);

    }
}