123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * mock_tasks.c
- *
- * Created on: Aug 23, 2024
- * Author: jakubski
- */
- #include "FreeRTOS.h"
- #include "task.h"
- #include "main.h"
- #include "cmsis_os.h"
- #include "mock_tasks.h"
- #include "measurements.h"
- #include "node-red-config.h"
- #include "stdlib.h"
- //extern RESMeasurements resMeasurements;
- //extern SesnorsInfo sensorsInfo;
- extern osMutexId_t resMeasurementsMutex;
- extern osMutexId_t sensorsInfoMutex;
- #ifdef USER_MOCKS
- extern RNG_HandleTypeDef hrng;
- float rndflt (float rng) {
- uint32_t rndVal = 0;
- HAL_RNG_GenerateRandomNumber (&hrng, &rndVal);
- return ((float)rndVal / (float)(RAND_MAX)) * rng;
- }
- #else
- float rndflt (float rng)
- {
- (void)rng;
- return 0.0;
- }
- #endif
- void MockMeasurmetsTaskInit(void) {
- osThreadAttr_t osThreadAttrMockMeasTask = { 0 };
- osThreadAttrMockMeasTask.name = "os_thread_mock_measurmets";
- osThreadAttrMockMeasTask.stack_size = configMINIMAL_STACK_SIZE * 2;
- osThreadAttrMockMeasTask.priority = (osPriority_t)osPriorityNormal;
- osThreadNew (MockMeasurmetsTask, NULL, &osThreadAttrMockMeasTask);
- }
- void MockMeasurmetsTask (void* argument) {
- uint16_t counter = 0;
- while (pdTRUE) {
- osMutexAcquire (resMeasurementsMutex, osWaitForever);
- resMeasurements.voltagePeak[0] = 60 + (0.01 * (counter % 100));
- resMeasurements.voltagePeak[1] = 61 + (0.01 * (counter % 100));
- resMeasurements.voltagePeak[2] = 62 + (0.01 * (counter % 100));
- resMeasurements.voltageRMS[0] = 46 + (0.01 * (counter % 100));
- resMeasurements.voltageRMS[1] = 47 + (0.01 * (counter % 100));
- resMeasurements.voltageRMS[2] = 48 + (0.01 * (counter % 100));
- resMeasurements.currentPeak[0] = 3 + (0.01 * (counter % 100));
- resMeasurements.currentPeak[1] = 4 + (0.01 * (counter % 100));
- resMeasurements.currentPeak[2] = 5 + (0.01 * (counter % 100));
- resMeasurements.currentRMS[0] = 1 + (0.01 * (counter % 100));
- resMeasurements.currentRMS[1] = 2 + (0.01 * (counter % 100));
- resMeasurements.currentRMS[2] = 3 + (0.01 * (counter % 100));
- resMeasurements.power[0] = resMeasurements.voltagePeak[0] * resMeasurements.currentRMS[0];
- resMeasurements.power[1] = resMeasurements.voltagePeak[1] * resMeasurements.currentRMS[1];
- resMeasurements.power[2] = resMeasurements.voltagePeak[2] * resMeasurements.currentRMS[2];
- osMutexRelease(resMeasurementsMutex);
- osMutexAcquire (sensorsInfoMutex, osWaitForever);
- sensorsInfo.pvTemperature[0] = 50 + (0.01 * (counter % 100));
- sensorsInfo.pvTemperature[1] = 51 + (0.01 * (counter % 100));
- sensorsInfo.fanVoltage = 12 + (0.01 * (counter % 100));
- sensorsInfo.pvEncoderXraw = 15 + (0.01 * (counter % 100));
- sensorsInfo.pvEncoderYraw = 10 + (0.01 * (counter % 100));
- sensorsInfo.motorXStatus = (counter % 100) > 50 ? 1 : 0;
- sensorsInfo.motorYStatus = (counter % 100) > 75 ? 1 : 0;
- sensorsInfo.motorXAveCurrent = 3 + (0.01 * (counter % 100));
- sensorsInfo.motorYAveCurrent = 3 + (0.01 * (counter % 100));
- sensorsInfo.motorXPeakCurrent = 6 + (0.01 * (counter % 100));
- sensorsInfo.motorYPeakCurrent = 6 + (0.01 * (counter % 100));
- sensorsInfo.limitXSwitchUp = (counter % 100) > 50 ? 1 : 0;
- sensorsInfo.limitXSwitchDown = (counter % 100) < 25 ? 1 : 0;
- sensorsInfo.limitXSwitchCenter = (counter % 100) > 35 ? 1 : 0;
- sensorsInfo.limitYSwitchUp = (counter % 100) > 50 ? 1 : 0;
- sensorsInfo.limitYSwitchDown = (counter % 100) < 25 ? 1 : 0;
- sensorsInfo.limitYSwitchCenter = (counter % 100) > 35 ? 1 : 0;
- sensorsInfo.powerSupplyFailMask = 0;
- osMutexRelease(sensorsInfoMutex);
- counter++;
- osDelay (pdMS_TO_TICKS (1000));
- }
- }
|