Compare commits
13 Commits
refactor/V
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 316f095c55 | |||
| 6f40370a94 | |||
| d8551c58b7 | |||
| decb22747c | |||
| 3b10f5ffe6 | |||
| 1e0fd80f5c | |||
| 41cc7a9ff6 | |||
| f263896cbf | |||
| d8e27df3fe | |||
| be0ce6dee5 | |||
| 0798ec40c1 | |||
| 4724da0455 | |||
| 13002071d7 |
@@ -4,15 +4,16 @@ on: [push]
|
||||
|
||||
jobs:
|
||||
Build-Release:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: cls-build
|
||||
steps:
|
||||
|
||||
- name: Install dependencies
|
||||
run: apt-get update && apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi ninja-build cmake protobuf-compiler python3 python3-grpcio python3-protobuf python3-pkg-resources python3-requests
|
||||
#- name: Install dependencies
|
||||
# run: apt-get update && apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi ninja-build cmake protobuf-compiler python3 python3-grpcio python3-protobuf python3-pkg-resources python3-requests
|
||||
# run: pip install setuptools
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.TOKEN }}
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -9,13 +9,19 @@
|
||||
url = https://github.com/ThrowTheSwitch/Unity
|
||||
[submodule "Application/CLS"]
|
||||
path = Application/CLS
|
||||
url = git@git.lan:oliver/libCLS.git
|
||||
url = https://git.revwal.de/oliver/libCLS.git
|
||||
[submodule "lib/ulog"]
|
||||
path = lib/ulog
|
||||
url = https://github.com/rdpoor/ulog.git
|
||||
[submodule "lib/ee24"]
|
||||
path = lib/ee24
|
||||
url = git@git.lan:oliver/ee24.git
|
||||
url = https://git.revwal.de/oliver/ee24.git
|
||||
[submodule "proto"]
|
||||
path = proto
|
||||
url = git@git.lan:oliver/cls-proto.git
|
||||
url = https://git.revwal.de/oliver/cls-proto.git
|
||||
[submodule "lib/TinyFrame"]
|
||||
path = lib/TinyFrame
|
||||
url = https://github.com/MightyPork/TinyFrame.git
|
||||
[submodule "Application/MLZR_Comm"]
|
||||
path = Application/MLZR_Comm
|
||||
url = https://git.revwal.de/ODDIY/MLZR_Comm.git
|
||||
|
||||
Submodule Application/CLS updated: 4744762b4c...58b50b2fb3
@@ -3,4 +3,5 @@ add_subdirectory(CLS)
|
||||
add_subdirectory(CLS_BSP)
|
||||
add_subdirectory(BSP)
|
||||
add_subdirectory(ram_loader)
|
||||
add_subdirectory(MLZR_Comm)
|
||||
add_subdirectory(Vehicle)
|
||||
1
Application/MLZR_Comm
Submodule
1
Application/MLZR_Comm
Submodule
Submodule Application/MLZR_Comm added at 48a98f4c82
@@ -12,6 +12,8 @@ target_sources(${PROJECT_NAME}
|
||||
${CMAKE_CURRENT_LIST_DIR}/FirmwareUpdate.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/LightTask.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/LightState.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/Headlight_can.c
|
||||
|
||||
INTERFACE
|
||||
${CMAKE_CURRENT_LIST_DIR}/UsbDataHandler.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/CanDataTask.h
|
||||
|
||||
116
Application/Tasks/Headlight_can.c
Normal file
116
Application/Tasks/Headlight_can.c
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
#include "UsbDataHandler.h"
|
||||
#include "headlight.pb.h"
|
||||
#include "CanDataHandler.h"
|
||||
#include "stdint.h"
|
||||
#include "cmsis_os2.h"
|
||||
#include "CLS.h"
|
||||
#include "CLS_BSP.h"
|
||||
#include "CLSAddress.h"
|
||||
#include "ulog.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
cls_headlight_RequestSettings msg_cls_headlight_RequestSettings;
|
||||
cls_headlight_Settings msg_cls_headlight_Settings;
|
||||
cls_headlight_SaveSettings msg_cls_headlight_SaveSettings;
|
||||
|
||||
|
||||
typedef struct Headlight_Control_Setting {
|
||||
float alpha;
|
||||
uint16_t on_threshold;
|
||||
uint16_t off_threshold;
|
||||
} Headlight_Control_Setting_t;
|
||||
|
||||
|
||||
uint16_t headlight_amblight = 0;
|
||||
|
||||
void CanData_ambilight(CanDataId canid, uint8_t* data, uint8_t len) {
|
||||
if(len == 2) {
|
||||
headlight_amblight = (data[1] << 8) | data[0];
|
||||
}
|
||||
|
||||
ULOG_INFO("Ambilight: %d", headlight_amblight);
|
||||
}
|
||||
|
||||
void AddHeadlightMessages() {
|
||||
CanData_regEventMsg(GENERATE_CLS_ADDRESS(CLS_CODE_STATUS, 0, CLS_CH_STA_AMBIENTLIGHT), CanData_ambilight);
|
||||
}
|
||||
|
||||
// whan a message is received, this function is called
|
||||
void DataClbk_cls_headlight_Settings(void* msg, uint32_t length) {
|
||||
DATA_CLBK_SETUP(cls_headlight_Settings);
|
||||
uint8_t device = msg_cls_headlight_Settings.deviceId;
|
||||
|
||||
uint16_t msg_light_setting = GENERATE_CLS_ADDRESS(CLS_CODE_CONFIG, device, 0);
|
||||
CLS_BSP_TxHeaderType can_header = CREATE_BSP_CAN_HEADER(msg_light_setting, CLS_BSP_DLC_BYTES_8);
|
||||
|
||||
|
||||
Headlight_Control_Setting_t data = {0};
|
||||
data.alpha = msg_cls_headlight_Settings.alpha;
|
||||
data.on_threshold = msg_cls_headlight_Settings.on_threshold;
|
||||
data.off_threshold = msg_cls_headlight_Settings.off_threshold;
|
||||
|
||||
CLS_BSP_CAN_AddMessageToSend(&can_header, (uint8_t*)&data);
|
||||
}
|
||||
|
||||
|
||||
void DataClbk_cls_headlight_SaveSettings(void* msg, uint32_t length) {
|
||||
DATA_CLBK_SETUP(cls_headlight_SaveSettings);
|
||||
|
||||
uint8_t device = msg_cls_headlight_SaveSettings.deviceId;
|
||||
uint16_t msg_light_setting = GENERATE_CLS_ADDRESS(CLS_CODE_CONFIG, device, 4);
|
||||
CLS_BSP_TxHeaderType can_header = CREATE_BSP_CAN_HEADER(msg_light_setting, CLS_BSP_DLC_BYTES_1);
|
||||
CLS_BSP_CAN_AddMessageToSend(&can_header, (uint8_t*)"X");
|
||||
}
|
||||
|
||||
|
||||
|
||||
static Headlight_Control_Setting_t response_theme = {0};
|
||||
static cls_headlight_Settings headligh_settings = {0};
|
||||
void CanData_responseHeadlightSetting(CanDataId canid, uint8_t* data, uint8_t len) {
|
||||
if(len == 8) {
|
||||
memcpy(&response_theme, data, 8);
|
||||
|
||||
headligh_settings.alpha = response_theme.alpha;
|
||||
headligh_settings.on_threshold = response_theme.on_threshold;
|
||||
headligh_settings.off_threshold = response_theme.off_threshold;
|
||||
headligh_settings.deviceId = (canid >> 3) & 0x1F;
|
||||
|
||||
|
||||
USBDataResonse(&headligh_settings,cls_headlight_Settings_fields, cls_usb_PackageType_HEADLIGHT_SETTINGS);
|
||||
}
|
||||
|
||||
CanData_removeEvent(canid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DataClbk_cls_headlight_RequestSettings(void* msg, uint32_t length) {
|
||||
DATA_CLBK_SETUP(cls_headlight_RequestSettings);
|
||||
uint8_t device = msg_cls_headlight_RequestSettings.deviceId;
|
||||
uint8_t data = 0;
|
||||
|
||||
uint16_t msg_light_setting = GENERATE_CLS_ADDRESS(CLS_CODE_CONFIG, device, 7);
|
||||
CLS_BSP_TxHeaderType can_header = CREATE_BSP_CAN_HEADER(msg_light_setting, CLS_BSP_DLC_BYTES_1);
|
||||
|
||||
|
||||
CanData_regEventMsg(msg_light_setting,CanData_responseHeadlightSetting);
|
||||
|
||||
|
||||
CLS_BSP_CAN_AddMessageToSend(&can_header, (uint8_t*)&data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void DataClbk_cls_headlight_RequestBrightness(void* msg, uint32_t length) {
|
||||
|
||||
cls_headlight_RequestBrightness msg_cls_headlight_RequestBrightness;
|
||||
memcpy(&msg_cls_headlight_RequestBrightness, msg, sizeof(cls_headlight_RequestBrightness));
|
||||
|
||||
cls_headlight_Brightness msg_cls_headlight_Brightness;
|
||||
msg_cls_headlight_Brightness.brightness = headlight_amblight;
|
||||
USBDataResonse(&msg_cls_headlight_Brightness,cls_headlight_Brightness_fields, cls_usb_PackageType_HEADLIGHT_BRIGHTNESS);
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "FreeRTOS.h"
|
||||
#include "firmware.pb.h"
|
||||
#include "light.pb.h"
|
||||
#include "headlight.pb.h"
|
||||
#include "usb_device.h"
|
||||
#include <pb_decode.h>
|
||||
#include "cls_device.pb.h"
|
||||
@@ -62,7 +63,10 @@ union {
|
||||
cls_light_SaveThemeSettings msg_cls_light_SaveThemeSettings;
|
||||
cls_light_RequestThemeSetting msg_cls_light_RequestThemeSetting;
|
||||
cls_usb_JumpToBootloader msg_cls_usb_JumpToBootloader;
|
||||
|
||||
cls_headlight_Settings msg_cls_headlight_Settings;
|
||||
cls_headlight_SaveSettings msg_cls_headlight_SaveSettings;
|
||||
cls_headlight_RequestSettings msg_cls_headlight_RequestSettings;
|
||||
cls_headlight_RequestBrightness msg_cls_headlight_RequestBrightness;
|
||||
} mem_msg_decode;
|
||||
|
||||
|
||||
@@ -121,6 +125,10 @@ message_handler_t message_handlers[] = {
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_SETTING_THEME_SAVE, cls_light_SaveThemeSettings),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_LIGHT_REQUEST_THEME, cls_light_RequestThemeSetting),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_JUMP_TO_BOOTLOADER, cls_usb_JumpToBootloader),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_HEADLIGHT_SETTINGS, cls_headlight_Settings),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_HEADLIGHT_SAVE_SETTINGS, cls_headlight_SaveSettings),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_HEADLIGHT_REQUEST_SETTINGS, cls_headlight_RequestSettings),
|
||||
MESSAGE_HANDLER(cls_usb_PackageType_HEADLIGHT_REQUEST_BRIGHTNESS, cls_headlight_RequestBrightness),
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -136,6 +136,10 @@ void DataClbk_cls_light_GlobalTheme(void* msg, uint32_t length);
|
||||
void DataClbk_cls_light_ThemeSettings(void* msg, uint32_t length);
|
||||
void DataClbk_cls_light_SaveThemeSettings(void* msg, uint32_t length);
|
||||
void DataClbk_cls_light_RequestThemeSetting(void* msg, uint32_t length);
|
||||
void DataClbk_cls_headlight_Settings(void* msg, uint32_t length);
|
||||
void DataClbk_cls_headlight_SaveSettings(void* msg, uint32_t length);
|
||||
void DataClbk_cls_headlight_RequestSettings(void* msg, uint32_t length);
|
||||
void DataClbk_cls_headlight_RequestBrightness(void* msg, uint32_t length);
|
||||
|
||||
#include "usb.pb.h"
|
||||
void USBDataResonse(void * msg, const pb_msgdesc_t *fields, cls_usb_PackageType typeid);
|
||||
|
||||
@@ -143,4 +143,7 @@ bool Vehicle_UnlockedSignal() {
|
||||
}
|
||||
|
||||
return unlocked;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -124,6 +124,7 @@ nanopb_generate_cpp(PROTO_SRCS PROTO_HDRS RELPATH proto
|
||||
proto/cls_device.proto
|
||||
proto/light.proto
|
||||
proto/usb.proto
|
||||
proto/headlight.proto
|
||||
)
|
||||
add_library(PROTOS ${PROTO_SRCS} ${PROTO_HDRS})
|
||||
target_include_directories(PROTOS PUBLIC ${NANOPB_INCLUDE_DIRS} ${PROJECT_BINARY_DIR})
|
||||
@@ -142,7 +143,7 @@ target_sources(${CMAKE_PROJECT_NAME} PUBLIC ${sources_SRCS})
|
||||
|
||||
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC Tasks CLS CLS_BSP BSP EE24 INA219 ulog ram_loader Vehicle)
|
||||
#target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC PROTOS)
|
||||
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC uart_driver)
|
||||
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC mlzr_comm TinyFrame uart_driver)
|
||||
#target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC lwrb)
|
||||
|
||||
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "BSP_ADC.h"
|
||||
#include "BSP_SDLogger.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -151,6 +152,8 @@ void MX_FREERTOS_Init(void) {
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN Header_StartDefaultTask */
|
||||
void AddHeadlightMessages();
|
||||
|
||||
/**
|
||||
* @brief Function implementing the defaultTask thread.
|
||||
* @param argument: Not used
|
||||
@@ -159,6 +162,7 @@ void MX_FREERTOS_Init(void) {
|
||||
|
||||
#include "CLS_BSP.h"
|
||||
#include "CLSAddress.h"
|
||||
#include "mlzr_comm.h"
|
||||
/* USER CODE END Header_StartDefaultTask */
|
||||
void StartDefaultTask(void *argument)
|
||||
{
|
||||
@@ -168,6 +172,9 @@ void StartDefaultTask(void *argument)
|
||||
BSP_EE24_Init();
|
||||
BSP_INA_Init();
|
||||
|
||||
MLZR_INIT();
|
||||
|
||||
|
||||
retSD = f_mount(&SDFatFS,SDPath,0);
|
||||
retSD = f_open(&SDFile, "counter.bin", FA_READ);
|
||||
|
||||
@@ -189,6 +196,7 @@ void StartDefaultTask(void *argument)
|
||||
}
|
||||
|
||||
BSP_SDLogger_Init(counter);
|
||||
AddHeadlightMessages();
|
||||
|
||||
char INA_LOG[72];
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "stm32h7xx_it.h"
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "AsyncComm.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -41,7 +42,8 @@
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
extern uart_desc_t uart_duplex;
|
||||
extern uart_desc_t uart_half;
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
@@ -233,7 +235,7 @@ void DMA1_Stream0_IRQHandler(void)
|
||||
/* USER CODE END DMA1_Stream0_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN DMA1_Stream0_IRQn 1 */
|
||||
|
||||
usart_dma_irq_handler(&uart_duplex);
|
||||
/* USER CODE END DMA1_Stream0_IRQn 1 */
|
||||
}
|
||||
|
||||
@@ -247,7 +249,7 @@ void DMA1_Stream1_IRQHandler(void)
|
||||
/* USER CODE END DMA1_Stream1_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
|
||||
|
||||
usart_dma_irq_handler_tx(&uart_duplex);
|
||||
/* USER CODE END DMA1_Stream1_IRQn 1 */
|
||||
}
|
||||
|
||||
@@ -261,7 +263,7 @@ void DMA1_Stream2_IRQHandler(void)
|
||||
/* USER CODE END DMA1_Stream2_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN DMA1_Stream2_IRQn 1 */
|
||||
|
||||
usart_dma_irq_handler(&uart_half);
|
||||
/* USER CODE END DMA1_Stream2_IRQn 1 */
|
||||
}
|
||||
|
||||
@@ -275,7 +277,7 @@ void DMA1_Stream3_IRQHandler(void)
|
||||
/* USER CODE END DMA1_Stream3_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
|
||||
|
||||
usart_dma_irq_handler_tx(&uart_half);
|
||||
/* USER CODE END DMA1_Stream3_IRQn 1 */
|
||||
}
|
||||
|
||||
@@ -400,7 +402,7 @@ void USART1_IRQHandler(void)
|
||||
|
||||
/* USER CODE END USART1_IRQn 0 */
|
||||
/* USER CODE BEGIN USART1_IRQn 1 */
|
||||
|
||||
usart_irq_handler(&uart_duplex);
|
||||
/* USER CODE END USART1_IRQn 1 */
|
||||
}
|
||||
|
||||
@@ -413,7 +415,7 @@ void USART3_IRQHandler(void)
|
||||
|
||||
/* USER CODE END USART3_IRQn 0 */
|
||||
/* USER CODE BEGIN USART3_IRQn 1 */
|
||||
|
||||
usart_irq_handler(&uart_half);
|
||||
/* USER CODE END USART3_IRQn 1 */
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ void MX_USART1_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART1_Init 1 */
|
||||
USART_InitStruct.PrescalerValue = LL_USART_PRESCALER_DIV1;
|
||||
USART_InitStruct.BaudRate = 1000000;
|
||||
USART_InitStruct.BaudRate = 2000000;
|
||||
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
|
||||
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
|
||||
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
|
||||
@@ -273,7 +273,7 @@ void MX_USART3_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART3_Init 1 */
|
||||
USART_InitStruct.PrescalerValue = LL_USART_PRESCALER_DIV1;
|
||||
USART_InitStruct.BaudRate = 1000000;
|
||||
USART_InitStruct.BaudRate = 2000000;
|
||||
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
|
||||
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
|
||||
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
|
||||
|
||||
@@ -4,5 +4,10 @@ add_subdirectory(nanopb)
|
||||
add_subdirectory(ulog)
|
||||
add_subdirectory(ina219)
|
||||
|
||||
|
||||
add_library(EE24 STATIC "ee24/ee24.c")
|
||||
target_include_directories(EE24 PUBLIC "ee24")
|
||||
target_include_directories(EE24 PUBLIC "ee24")
|
||||
|
||||
|
||||
add_library(TinyFrame STATIC "TinyFrame/TinyFrame.c")
|
||||
target_include_directories(TinyFrame PUBLIC "./TinyFrame" "./TinyFrameConf")
|
||||
|
||||
1
lib/TinyFrame
Submodule
1
lib/TinyFrame
Submodule
Submodule lib/TinyFrame added at a29167a69f
81
lib/TinyFrameConf/TF_Config.h
Normal file
81
lib/TinyFrameConf/TF_Config.h
Normal file
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// TinyFrame configuration file.
|
||||
//
|
||||
// Rename to TF_Config.h
|
||||
//
|
||||
|
||||
#ifndef TF_CONFIG_H
|
||||
#define TF_CONFIG_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h> // used by the TF_Error() macro defined below
|
||||
//#include <esp8266.h> // when using with esphttpd
|
||||
|
||||
//----------------------------- FRAME FORMAT ---------------------------------
|
||||
// The format can be adjusted to fit your particular application needs
|
||||
|
||||
// If the connection is reliable, you can disable the SOF byte and checksums.
|
||||
// That can save up to 9 bytes of overhead.
|
||||
|
||||
// ,-----+-----+-----+------+------------+- - - -+-------------,
|
||||
// | SOF | ID | LEN | TYPE | HEAD_CKSUM | DATA | DATA_CKSUM |
|
||||
// | 0-1 | 1-4 | 1-4 | 1-4 | 0-4 | ... | 0-4 | <- size (bytes)
|
||||
// '-----+-----+-----+------+------------+- - - -+-------------'
|
||||
|
||||
// !!! BOTH PEERS MUST USE THE SAME SETTINGS !!!
|
||||
|
||||
// Adjust sizes as desired (1,2,4)
|
||||
#define TF_ID_BYTES 2
|
||||
#define TF_LEN_BYTES 2
|
||||
#define TF_TYPE_BYTES 2
|
||||
|
||||
// Checksum type. Options:
|
||||
// TF_CKSUM_NONE, TF_CKSUM_XOR, TF_CKSUM_CRC8, TF_CKSUM_CRC16, TF_CKSUM_CRC32
|
||||
// TF_CKSUM_CUSTOM8, TF_CKSUM_CUSTOM16, TF_CKSUM_CUSTOM32
|
||||
// Custom checksums require you to implement checksum functions (see TinyFrame.h)
|
||||
#define TF_CKSUM_TYPE TF_CKSUM_CRC16
|
||||
|
||||
// Use a SOF byte to mark the start of a frame
|
||||
#define TF_USE_SOF_BYTE 1
|
||||
// Value of the SOF byte (if TF_USE_SOF_BYTE == 1)
|
||||
#define TF_SOF_BYTE 0x01
|
||||
|
||||
//----------------------- PLATFORM COMPATIBILITY ----------------------------
|
||||
|
||||
// used for timeout tick counters - should be large enough for all used timeouts
|
||||
typedef uint16_t TF_TICKS;
|
||||
|
||||
// used in loops iterating over listeners
|
||||
typedef uint8_t TF_COUNT;
|
||||
|
||||
//----------------------------- PARAMETERS ----------------------------------
|
||||
|
||||
// Maximum received payload size (static buffer)
|
||||
// Larger payloads will be rejected.
|
||||
#define TF_MAX_PAYLOAD_RX 1024
|
||||
// Size of the sending buffer. Larger payloads will be split to pieces and sent
|
||||
// in multiple calls to the write function. This can be lowered to reduce RAM usage.
|
||||
#define TF_SENDBUF_LEN 1024
|
||||
|
||||
// --- Listener counts - determine sizes of the static slot tables ---
|
||||
|
||||
// Frame ID listeners (wait for response / multi-part message)
|
||||
#define TF_MAX_ID_LST 50
|
||||
// Frame Type listeners (wait for frame with a specific first payload byte)
|
||||
#define TF_MAX_TYPE_LST 5
|
||||
// Generic listeners (fallback if no other listener catches it)
|
||||
#define TF_MAX_GEN_LST 5
|
||||
|
||||
// Timeout for receiving & parsing a frame
|
||||
// ticks = number of calls to TF_Tick()
|
||||
#define TF_PARSER_TIMEOUT_TICKS 10
|
||||
|
||||
// Whether to use mutex - requires you to implement TF_ClaimTx() and TF_ReleaseTx()
|
||||
#define TF_USE_MUTEX 1
|
||||
|
||||
// Error reporting function. To disable debug, change to empty define
|
||||
#define TF_Error(format, ...) printf("[TF] " format "\n", ##__VA_ARGS__)
|
||||
|
||||
//------------------------- End of user config ------------------------------
|
||||
|
||||
#endif //TF_CONFIG_H
|
||||
2
proto
2
proto
Submodule proto updated: 4ff29f9d5b...37c0e46f59
@@ -6,6 +6,7 @@ ${PROTO_SRC_DIR}/firmware.proto
|
||||
${PROTO_SRC_DIR}/light.proto
|
||||
${PROTO_SRC_DIR}/usb.proto
|
||||
${PROTO_SRC_DIR}/cls_device.proto
|
||||
${PROTO_SRC_DIR}/headlight.proto
|
||||
)
|
||||
|
||||
# Specify where you want to generate the python code
|
||||
|
||||
@@ -4,25 +4,26 @@ from google.protobuf.message import DecodeError
|
||||
from serial.tools import list_ports
|
||||
|
||||
from light_pb2 import GlobalBrightness, Theme, GlobalTheme, ThemeSettings
|
||||
from headlight_pb2 import Settings, RequestSettings
|
||||
from usb_pb2 import PackageType
|
||||
from vcp_driver import *
|
||||
|
||||
if __name__ == "__main__":
|
||||
ser = setup_connection()
|
||||
# Create a message
|
||||
request = GlobalBrightness()
|
||||
request.brightness = 100
|
||||
#request = GlobalBrightness()
|
||||
#request.brightness = 100
|
||||
# Serialize the request to a bytearray
|
||||
request_data = request.SerializeToString()
|
||||
#request_data = request.SerializeToString()
|
||||
|
||||
# Send the request
|
||||
send_package(PackageType.LIGHT_GLOBAL_BRIGHT, request_data, ser)
|
||||
#send_package(PackageType.LIGHT_GLOBAL_BRIGHT, request_data, ser)
|
||||
|
||||
|
||||
request = GlobalTheme()
|
||||
request.theme = 1
|
||||
request_data = request.SerializeToString()
|
||||
send_package(PackageType.LIGHT_GLOBAL_THEME, request_data, ser)
|
||||
#request = GlobalTheme()
|
||||
#request.theme = 1
|
||||
#request_data = request.SerializeToString()
|
||||
#send_package(PackageType.LIGHT_GLOBAL_THEME, request_data, ser)
|
||||
|
||||
|
||||
# request = ThemeSettings()
|
||||
@@ -33,3 +34,14 @@ if __name__ == "__main__":
|
||||
# request.animation = 2
|
||||
# request_data = request.SerializeToString()
|
||||
# send_package(PackageType.LIGHT_SETTING_THEME, request_data, ser)
|
||||
|
||||
|
||||
request = Settings()
|
||||
request.deviceId = 1
|
||||
request.alpha = 0.001
|
||||
request.on_threshold = 600
|
||||
request.off_threshold = 400
|
||||
request.on_time = 100
|
||||
request.input_invert = False
|
||||
request_data = request.SerializeToString()
|
||||
send_package(PackageType.HEADLIGHT_SETTINGS, request_data, ser)
|
||||
|
||||
@@ -3,21 +3,20 @@ import struct
|
||||
from google.protobuf.message import DecodeError
|
||||
from serial.tools import list_ports
|
||||
|
||||
from light_pb2 import RequestThemeSetting, Theme, ThemeSettings
|
||||
from headlight_pb2 import Settings, RequestSettings
|
||||
from usb_pb2 import PackageType
|
||||
from vcp_driver import *
|
||||
|
||||
if __name__ == "__main__":
|
||||
ser = setup_connection()
|
||||
|
||||
request = RequestThemeSetting()
|
||||
request.deviceId = 0
|
||||
request.theme = 1
|
||||
request = RequestSettings()
|
||||
request.deviceId = 1
|
||||
print("send request")
|
||||
print(request)
|
||||
|
||||
request_data = request.SerializeToString()
|
||||
send_package(PackageType.LIGHT_REQUEST_THEME, request_data, ser)
|
||||
send_package(PackageType.HEADLIGHT_REQUEST_SETTINGS, request_data, ser)
|
||||
|
||||
|
||||
print("wait for response")
|
||||
@@ -30,13 +29,13 @@ if __name__ == "__main__":
|
||||
print(length, typeid, check)
|
||||
|
||||
# Check if the type is RESPONSE_DEVICE_LIST
|
||||
if typeid == PackageType.LIGHT_SETTING_THEME:
|
||||
if typeid == PackageType.HEADLIGHT_SETTINGS:
|
||||
# Read the response data from the serial port
|
||||
response_data = ser.read(length)
|
||||
|
||||
# Try to parse the data as a ResponseDeviceList message
|
||||
try:
|
||||
response = ThemeSettings.FromString(response_data)
|
||||
response = Settings.FromString(response_data)
|
||||
|
||||
except DecodeError:
|
||||
# If we get a DecodeError, it means the data we read is not a valid
|
||||
|
||||
Reference in New Issue
Block a user