Add more Arduino/FreeRTOS test stubs so that eModbus builds in ESP32 mode.

This commit is contained in:
Jonny 2025-08-06 20:28:55 +01:00
parent 9eac0a90b5
commit 55d8a24f55
12 changed files with 86 additions and 11 deletions

View file

@ -62,7 +62,7 @@ include_directories("${source_dir}/googletest/include"
include_directories(emul)
# For eModBus
add_compile_definitions(__linux__ HW_LILYGO NISSAN_LEAF_BATTERY)
add_compile_definitions(ESP32 HW_LILYGO NISSAN_LEAF_BATTERY)
# add the executable
add_executable(tests
@ -74,9 +74,12 @@ add_executable(tests
../Software/src/devboard/utils/events.cpp
../Software/src/datalayer/datalayer.cpp
../Software/src/datalayer/datalayer_extended.cpp
../Software/src/lib/eModbus-eModbus/ModbusMessage.cpp
../Software/src/lib/eModbus-eModbus/ModbusTypeDefs.cpp
../Software/src/lib/eModbus-eModbus/Logging.cpp
../Software/src/lib/eModbus-eModbus/ModbusMessage.cpp
../Software/src/lib/eModbus-eModbus/ModbusServer.cpp
../Software/src/lib/eModbus-eModbus/ModbusServerRTU.cpp
../Software/src/lib/eModbus-eModbus/ModbusTypeDefs.cpp
../Software/src/lib/eModbus-eModbus/RTUutils.cpp
# ../Software/src/lib/eModbus-eModbus/scripts/mbServerFCs.cpp
../Software/USER_SETTINGS.cpp
../Software/src/battery/BATTERIES.cpp
@ -90,6 +93,7 @@ add_executable(tests
emul/time.cpp
emul/serial.cpp
emul/Arduino.cpp
emul/freertos/FreeRTOS.cpp
)
target_link_libraries(tests

View file

@ -1,5 +1,16 @@
#include "Arduino.h"
void delay(unsigned long ms) {}
void delayMicroseconds(unsigned long us) {}
int digitalRead(uint8_t pin) {
return 0;
}
void digitalWrite(uint8_t pin, uint8_t val) {}
unsigned long micros() {
return 0;
}
void pinMode(uint8_t pin, uint8_t mode) {}
int max(int a, int b) {
return (a > b) ? a : b;
}

View file

@ -1,7 +1,13 @@
#ifndef ARDUINO_H
#define ARDUINO_H
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "HardwareSerial.h"
#include "Print.h"
#include "esp-hal-gpio.h"
@ -9,10 +15,13 @@ void pinMode(uint8_t pin, uint8_t mode);
void digitalWrite(uint8_t pin, uint8_t val);
int digitalRead(uint8_t pin);
unsigned long micros();
// Can be previously declared as a macro in stupid eModbus
#undef millis
unsigned long millis();
void delay(unsigned long ms);
void delayMicroseconds(unsigned long us);
int max(int a, int b);
#endif

View file

@ -2,6 +2,8 @@
#define HARDWARESERIAL_H
#include <stdint.h>
#include <cstddef>
#include "Print.h"
#include "Stream.h"
enum SerialConfig {
@ -33,11 +35,18 @@ enum SerialConfig {
class HardwareSerial : public Stream {
public:
int available() { return 0; }
uint32_t baudRate() { return 9600; }
void begin(unsigned long baud, uint32_t config = SERIAL_8N1, int8_t rxPin = -1, int8_t txPin = -1,
bool invert = false, unsigned long timeout_ms = 20000UL, uint8_t rxfifo_full_thrhd = 120) {}
int read() { return 0; }
void setTxBufferSize(uint16_t size) {}
void setRxBufferSize(uint16_t size) {}
bool setRxFIFOFull(uint8_t fifoBytes) { return false; }
size_t write(uint8_t) { return 0; }
};
extern HardwareSerial Serial0;
extern HardwareSerial Serial;
extern HardwareSerial Serial1;
extern HardwareSerial Serial2;

View file

@ -1,6 +1,13 @@
#ifndef PRINT_H
#define PRINT_H
class Print {};
class Print {
public:
virtual void flush() {}
void printf(const char* format, ...) {}
virtual size_t write(uint8_t) = 0;
virtual size_t write(const char* s) { return 0; }
virtual size_t write(const uint8_t* buffer, size_t size) { return 0; }
};
#endif

View file

@ -1,6 +1,12 @@
#ifndef STREAM_H
#define STREAM_H
class Stream {};
#include "Print.h"
class Stream : public Print {
public:
virtual int available() = 0;
virtual int read() = 0;
};
#endif

View file

@ -0,0 +1,10 @@
#include "FreeRTOS.h"
extern "C" {
BaseType_t xTaskCreatePinnedToCore(TaskFunction_t pxTaskCode, const char* const pcName, const uint32_t ulStackDepth,
void* const pvParameters, UBaseType_t uxPriority, TaskHandle_t* const pxCreatedTask,
const BaseType_t xCoreID) {
return 0;
}
void vTaskDelete(TaskHandle_t xTaskToDelete) {}
}

View file

@ -0,0 +1,21 @@
#ifndef _FREERTOS_H_
#define _FREERTOS_H_
#include "task.h"
#include <stdint.h>
typedef int BaseType_t;
typedef unsigned int UBaseType_t;
const BaseType_t tskNO_AFFINITY = -1;
extern "C" {
BaseType_t xTaskCreatePinnedToCore(TaskFunction_t pxTaskCode, const char* const pcName, const uint32_t ulStackDepth,
void* const pvParameters, UBaseType_t uxPriority, TaskHandle_t* const pxCreatedTask,
const BaseType_t xCoreID);
void vTaskDelete(TaskHandle_t xTaskToDelete);
}
#endif

View file

@ -0,0 +1,2 @@
typedef void* TaskHandle_t;
typedef void (*TaskFunction_t)(void*);

View file

@ -1,5 +1,5 @@
#include "HardwareSerial.h"
HardwareSerial Serial0;
HardwareSerial Serial;
HardwareSerial Serial1;
HardwareSerial Serial2;

View file

@ -3,7 +3,6 @@
#include "../Software/src/datalayer/datalayer.h"
#include "../Software/src/devboard/safety/safety.h"
#include "../Software/src/devboard/utils/events.h"
#include "../Software/src/inverter/ModbusInverterProtocol.h"
TEST(SafetyTests, ShouldSetEventWhenTemperatureTooHigh) {
init_events();

View file

@ -4,7 +4,6 @@
#include "../Software/src/datalayer/datalayer.h"
#include "../Software/src/devboard/safety/safety.h"
#include "../Software/src/devboard/utils/events.h"
#include "../Software/src/inverter/ModbusInverterProtocol.h"
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
@ -12,5 +11,3 @@ int main(int argc, char** argv) {
}
void store_settings_equipment_stop(void) {}
ModbusInverterProtocol::ModbusInverterProtocol() {}