Worker::Worker(Communicator *communicator, QObject *parent) : QObject(parent) { m_waitingCount = 0; m_communicator = communicator; m_ready = false; m_currentLine = -1; m_commandList = QStringList(); m_currentState = StoppedState; m_bufferSize = 3; aliveTimer = new QTimer(this); aliveTimer->setInterval(1000); // 1s aliveTimer->start(); connect(m_communicator, SIGNAL(usbConnected()), this, SLOT(usbConnected())); connect(m_communicator, SIGNAL(usbDisconnected()), this, SLOT(usbDisconnected())); connect(m_communicator, SIGNAL(commandReceived(QByteArray)), this, SLOT(commandReceived(QByteArray))); connect(aliveTimer, SIGNAL(timeout()), this, SLOT(aliveTimerTick())); }
int main(void) { fiprintf(stderr, "Power Up!\n\r"); while (1) { GPIO_SET(IO_LED); GPIO_SET(IO_ASSIST_AIR); GPIO_CLEAR(IO_EXHAUST); GPIO_CLEAR(IO_LASER_FIRE); delay(500); GPIO_CLEAR(IO_LED); GPIO_CLEAR(IO_ASSIST_AIR); GPIO_SET(IO_EXHAUST); GPIO_SET(IO_LASER_FIRE); delay(500); fiprintf(stderr, "USB connected: %d\n\r", usbConnected()); if (usbConnected()) { usbSendFlush(TESTHEST, sizeof(TESTHEST)); } fiprintf(stderr, "Airflow: %d (%d %%)\n\r", READ_ADC(IO_AIRFLOW), airflow()); fprintf(stderr, "T out: %d (%f Ohm, %f degC)\n\r", READ_ADC(IO_TEMP_OUT), readNTCres(IO_CHAN(IO_TEMP_OUT)), readNTCcelcius(IO_CHAN(IO_TEMP_OUT)) ); fprintf(stderr, "T in: %f degC\n\r", readNTCcelcius(IO_CHAN(IO_TEMP_IN))); fprintf(stderr, "T inter: %f degC\n\r", readNTCcelcius(IO_CHAN(IO_TEMP_INTERNAL))); fiprintf(stderr, "Supply: %d mv\n\r", supplyVoltage()); unsigned int err0 = errorUART(IO_DEBUG_RX); if (err0) { fiprintf(stderr, "Debug UART Error: %x\n\r", err0); } err0 = errorUART(IO_WATCHDOG_RX); if (err0) { fiprintf(stderr, "Watchdog UART Error: %x\n\r", err0); } err0 = errorUART(IO_CHILLER_RX); if (err0) { fiprintf(stderr, "Chiller UART Error: %x\n\r", err0); } } }
int main(void) { /* * Start OS and HAL */ halInit(); chSysInit(); setupIPC(); DEBUGEN(printf("App Mode\n")); usbDisconnectBus(&USBD1); /* * Initialize extra driver objects. */ sduObjectInit(&SDU1); sduObjectInit(&SDU2); /* * Start peripherals */ sdStart(&SD1, &uart1Cfg); sdStart(&SD2, &uart2Cfg); sdStart(&SD3, &uart3Cfg); usbStart(&USBD1, &usbcfg); sduStart(&SDU1, &serusbcfg1); sduStart(&SDU2, &serusbcfg2); canStart(&CAND1, &cancfg); dacStart(&DACD1, &dac1cfg1); adcStart(&ADCD1, NULL); adcStart(&ADCD3, NULL); timcapStart(&TIMCAPD3, &tc_conf); pwmStart(&PWMD_LED2, &pwmcfg); eeInit(); // Compare and update versions in EEprom if needed. version_t v; if (readVersionFromEE(VERSION_IDX_APP, &v) == 0 && memcmp(&versions, &v, sizeof(version_t)) != 0) { writeVersionToEE(VERSION_IDX_APP, &versions[VERSION_IDX_APP]); } if (readVersionFromEE(VERSION_IDX_BL, &v) == 0 ) { memcpy(&versions[VERSION_IDX_BL], &v, sizeof(version_t)); } /* * Creates the threads. */ chThdCreateStatic(waThreadBDU, sizeof(waThreadBDU), NORMALPRIO+5, ThreadBDU, NULL); chThdCreateStatic(waThreadSDU, sizeof(waThreadSDU), NORMALPRIO+2, ThreadSDU, NULL); chThdCreateStatic(waThreadADC, sizeof(waThreadADC), NORMALPRIO, ThreadADC, NULL); chThdCreateStatic(waThreadKnock, sizeof(waThreadKnock), NORMALPRIO, ThreadKnock, NULL); chThdCreateStatic(waThreadCAN, sizeof(waThreadCAN), NORMALPRIO, ThreadCAN, NULL); chThdCreateStatic(waThreadSER1, sizeof(waThreadSER1), NORMALPRIO, ThreadSER1, NULL); chThdCreateStatic(waThreadRecord, sizeof(waThreadRecord), NORMALPRIO+1, ThreadRecord, NULL); chThdCreateStatic(waThreadWdg, sizeof(waThreadWdg), HIGHPRIO, ThreadWdg, NULL); /* Create last as it uses pointers from above */ chThdCreateStatic(waThreadMonitor, sizeof(waThreadMonitor), NORMALPRIO+10, ThreadMonitor, NULL); while (TRUE) { while(USBD1.state != USB_READY) chThdSleepMilliseconds(10); chThdSleepMilliseconds(100); if (usbConnected()) { usbConnectBus(&USBD1); } else { usbDisconnectBus(&USBD1); } } }