Beispiel #1
0
void Serial_HexDump(const void *buffer, size_t size)
{
	uint32_t start = (uint32_t)buffer & 0x0f;
	uint32_t address = (uint32_t)buffer & ~0x0f;
	const uint8_t *bytes = (const uint8_t *)address;

	size_t offset;
	for (offset = 0; offset < start + size; offset += 16) {

		Serial_printf("%08lx: ", address + offset);

		int i;
		for (i = 0; i < 16; ++i) {
			if (8 == i) {
				Serial_PutChar(' ');
			}
			if (offset + i < start || offset + i >= start + size) {
				Serial_print(" --");
			} else {
				Serial_printf(" %02x", bytes[offset + i]);
			}
		}

		Serial_print("  |");

		for (i = 0; i < 16; i++) {
			if (8 == i) {
				Serial_PutChar(' ');
			}
			if (offset + i < start || offset + i >= start + size) {
				Serial_PutChar(' ');
			} else if (isprint(bytes[offset + i])) {
				Serial_PutChar(bytes[offset + i]);
			} else {
				Serial_PutChar('.');
			}
		}

		Serial_print("|\n");
	}
}
Beispiel #2
0
void
loop( void )
{
    bool gpsDateTimeValid;
    bool gpsTransitDataValid;
    bool obdSpeedKphValid;

    /* Update GPS & OBD data drivers */
    GPS_update();
    OBD_update();

    /* Wait for valid date & time */
    if ( millis() - g_timer_sample_count_ms >= g_timer_sample_rate_ms ) {

        /* Blink status LED for 100ms */
        LED_blink( LED_ID_STATUS, 100 );

        /* Get GPS date & time */
        gpsDateTimeValid = GPS_getUtcDateTime( &g_sampledDateTime );

        /* Increase sample rate if GPS date and time is locked */
        g_timer_sample_rate_ms = ( gpsDateTimeValid )
                                    ? TIMER_GPS_LOCKED_SAMPLE_RATE_MS
                                    : TIMER_GPS_NOT_LOCKED_SAMPLE_RATE_MS;

        /* Get GPS transit data */
        gpsTransitDataValid = GPS_getTransitData( &g_sampledTransitData );

        /* Get OBD vehicle speed KPH */
        obdSpeedKphValid = OBD_getVehicleSpeed( &g_sampledVehicleSpeedKph );

        /* Output sampled data to serial port */
        Serial_printf(
            /* 0  1    2    3    4    5    6    7        8  9  A  B  C  D  E */
            "%lu,%u,%04u-%02u-%02uT%02u:%02u:%02uZ00:00,%u,%f,%f,%f,%f,%u,%f\n",

            GPS_getNumOfSatellites(),      /* 0 */

            gpsDateTimeValid,              /* 1 */
            g_sampledDateTime.year,        /* 2 */
            g_sampledDateTime.month,       /* 3 */
            g_sampledDateTime.day,         /* 4 */
            g_sampledDateTime.hour,        /* 5 */
            g_sampledDateTime.minute,      /* 6 */
            g_sampledDateTime.second,      /* 7 */

            gpsTransitDataValid,           /* 8 */
            g_sampledTransitData.lat,      /* 9 */
            g_sampledTransitData.lng,      /* A */
            g_sampledTransitData.speedMph, /* B */
            g_sampledTransitData.course,   /* C */

            obdSpeedKphValid,              /* D */
            g_sampledVehicleSpeedKph       /* E */
        );

        g_timer_sample_count_ms = millis();
    }

    /* Reset the WDT */
    WDT_reset();
}