static void imu_update_task(void *params) { (void)params; int res; struct i2c_dev *i2c1 = i2c_get_device(I2C_1); i2c_init(i2c1, 400000); res = is9150_init(i2c1, IS_9150_ADDR << 1); pr_info("IMU: init res="); pr_info_int(res); pr_info("\r\n"); (void)res; /* Clear the sensor data structures */ memset(sensor_data, 0x00, sizeof(struct is9150_all_sensor_data) * 2); while(1) { res = is9150_read_all_sensors(fill_buf); if (!res) imu_update_buf_ptrs(); vTaskDelay(1); } }
int CAN_device_init(uint8_t channel, uint32_t baud) { pr_info("Initializing CAN"); pr_info_int(channel); pr_info_int_msg(" with baud rate ", baud); if (!initQueues()) { pr_info("CAN init queues failed\r\n"); return 0; } switch (channel) { case 0: CAN_device_init_1(baud); break; case 1: CAN_device_init_2(baud); break; default: pr_info("CAN init device failed\r\n"); return 0; } /* Clear out all filter values except 0. It accepts all. */ CAN_device_set_filter(channel, 0, 1, 0, 0, true); for (size_t i = 1; i < CAN_FILTER_COUNT; ++i) CAN_device_set_filter(channel, i, 0, 0, 0, false); pr_info("CAN init success!\r\n"); return 1; }
void updateSampleRates(LoggerConfig *loggerConfig, int *loggingSampleRate, int *telemetrySampleRate, int *timebaseSampleRate) { *loggingSampleRate = getHighestSampleRate(loggerConfig); *timebaseSampleRate = *loggingSampleRate; *timebaseSampleRate = getHigherSampleRate(BACKGROUND_SAMPLE_RATE, *timebaseSampleRate); *telemetrySampleRate = calcTelemetrySampleRate(loggerConfig, *loggingSampleRate); pr_info("timebase/logging/telemetry sample rate: "); pr_info_int(decodeSampleRate(*timebaseSampleRate)); pr_info("/"); pr_info_int(decodeSampleRate(*loggingSampleRate)); pr_info("/"); pr_info_int(decodeSampleRate(*telemetrySampleRate)); pr_info("\r\n"); }
void WriteScriptPage(Serial *serial, unsigned int argc, char **argv){ if (argc < 2){ put_commandError(serial, ERROR_CODE_INVALID_PARAM); return; } unsigned int page = modp_atoi(argv[1]); char *scriptPage = ""; if (argc >= 3) scriptPage = argv[2]; if (page >=0 && page < SCRIPT_PAGES){ if (argc >= 2) unescape(scriptPage); lockLua(); vPortEnterCritical(); pr_info_int(strlen(scriptPage)); pr_info("="); pr_info(scriptPage); pr_info("\r\n"); int result = flashScriptPage(page, scriptPage); vPortExitCritical(); unlockLua(); if (result == 0){ put_commandOK(serial); } else{ put_commandError(serial, result); } } else{ put_commandError(serial, ERROR_CODE_INVALID_PARAM); } }
int CAN_device_init(uint8_t channel, uint32_t baud) { pr_info("CAN"); pr_info_int(channel); pr_info(" init @ "); pr_info_int(baud); if (initQueues()) { switch (channel) { case 0: CAN_device_init_1(baud); break; } pr_info(" win\r\n"); return 1; } else { pr_info(" fail\r\n"); return 0; } }
int main(int argc, char* argv[]) { LoggerConfig *config = getWorkingLoggerConfig(); initApi(); initialize_logger_config(); setupMockSerial(); imu_init(config); resetPredictiveTimer(); int pt; pt = open("/dev/ptmx", O_RDWR | O_NOCTTY); if (pt < 0) { perror("open /dev/ptmx"); return 1; } grantpt(pt); unlockpt(pt); fprintf(stderr, "RaceCapture/Pro simulator on: %s\n", ptsname(pt)); char line[LINE_BUFFER_SIZE]; memset(line, 0, LINE_BUFFER_SIZE); int messageCount = 0; while(1){ size_t count = 0; line[0] = '\0'; while (count < LINE_BUFFER_SIZE){ char c; read(pt, &c, 1); line[count] = c; count++; if (c == '\r'){ line[count] = '\0'; break; } } printf("rx: (%zu): %s\r\n", strlen(line), line); mock_resetTxBuffer(); process_api(getMockSerial(), line, strlen(line)); char *txBuffer = mock_getTxBuffer(); printf("tx:(%zu) %s\r\n", strlen(txBuffer), txBuffer); write(pt, txBuffer, strlen(txBuffer)); pr_info_int(++messageCount); pr_info(" messages\r\n"); } return 0; }