added passthouth off headlight settings messages
This commit is contained in:
@@ -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
|
||||
|
||||
84
Application/Tasks/Headlight_can.c
Normal file
84
Application/Tasks/Headlight_can.c
Normal file
@@ -0,0 +1,84 @@
|
||||
|
||||
#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"
|
||||
|
||||
|
||||
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;
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -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,9 @@ 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;
|
||||
} mem_msg_decode;
|
||||
|
||||
|
||||
@@ -121,6 +124,9 @@ 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),
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -136,6 +136,9 @@ 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);
|
||||
|
||||
#include "usb.pb.h"
|
||||
void USBDataResonse(void * msg, const pb_msgdesc_t *fields, cls_usb_PackageType typeid);
|
||||
|
||||
@@ -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})
|
||||
|
||||
2
proto
2
proto
Submodule proto updated: 4ff29f9d5b...06dd6f873d
@@ -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