From 3f8480976fe7bc6d36aaa3d7054fef64cb5e4085 Mon Sep 17 00:00:00 2001 From: Gabriel Lima Date: Sat, 27 Dec 2025 19:38:54 -0300 Subject: [PATCH] Firmware: Hello World HID IN packet --- .../Components/TelemetryPacket.hpp | 22 +++++++++++++++++++ Firmware/Application/start.cpp | 22 +++++++++++++++++++ Firmware/BrushedPIDDriver.ioc | 8 ++++++- Firmware/USB_Device/App/usbd_desc.c | 6 ++--- Firmware/USB_Device/Target/usbd_conf.c | 2 +- Firmware/USB_Device/Target/usbd_conf.h | 4 +++- 6 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 Firmware/Application/Components/TelemetryPacket.hpp diff --git a/Firmware/Application/Components/TelemetryPacket.hpp b/Firmware/Application/Components/TelemetryPacket.hpp new file mode 100644 index 0000000..45bd84b --- /dev/null +++ b/Firmware/Application/Components/TelemetryPacket.hpp @@ -0,0 +1,22 @@ +/* + * TelemetryPacket.hpp + * + * Created on: Dec 27, 2025 + * Author: Gabriel + */ + +#ifndef COMPONENTS_TELEMETRYPACKET_HPP_ +#define COMPONENTS_TELEMETRYPACKET_HPP_ + +#include + +class __attribute__((packed)) TelemetryPacket { +public: + uint8_t report_id = 0x01; + uint32_t counter; // Increments every send + uint32_t timestamp_ms; // HAL_GetTick() value + char message[32]; // Text message + uint8_t padding[23]; // Pad to 63 bytes +}; + +#endif /* COMPONENTS_TELEMETRYPACKET_HPP_ */ diff --git a/Firmware/Application/start.cpp b/Firmware/Application/start.cpp index 8bdbc8f..873dd79 100644 --- a/Firmware/Application/start.cpp +++ b/Firmware/Application/start.cpp @@ -17,12 +17,21 @@ #include "Encoder_STM32.hpp" #include "SoftTimer_STM32.hpp" +#include "Components/TelemetryPacket.hpp" + +#include "main.h" +#include "usb_device.h" +#include "usbd_customhid.h" +extern USBD_HandleTypeDef hUsbDeviceFS; + void executableDispatch(void* _executable){ Executable* executable = static_cast(_executable); executable->execute(); vTaskDelete(NULL); } +TelemetryPacket pkt; + void start(){ printf("----------------INIT----------------\n"); printf("X and Y: %u, %u\n", (uint16_t)HAL_GetUIDw0(), (uint16_t)HAL_GetUIDw0()>>16); @@ -46,6 +55,19 @@ void start(){ // Init shared resources //Init components + pkt.counter = 0; + for(uint32_t i=0; i<32; i++){ + pkt.message[i] = 33 + i; + } + for(uint32_t i=0; i<23; i++){ + pkt.padding[i] = 0; + } + while(true){ + pkt.counter++; + pkt.timestamp_ms = xTaskGetTickCount(); + uint8_t result = USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, reinterpret_cast(&pkt), 64); + vTaskDelay(1000); + } //Init tasks vTaskDelete(nullptr); diff --git a/Firmware/BrushedPIDDriver.ioc b/Firmware/BrushedPIDDriver.ioc index 7c59e6b..6d465fa 100644 --- a/Firmware/BrushedPIDDriver.ioc +++ b/Firmware/BrushedPIDDriver.ioc @@ -296,10 +296,16 @@ TIM1.IPParameters=Channel-PWM Generation1 CH1 CH1N,Channel-PWM Generation2 CH2 C TIM1.Prescaler=0 TIM1.SourceBRKCOMP5=TIM_BREAKINPUTSOURCE_ENABLE TIM1.SourceBRKCOMP6=TIM_BREAKINPUTSOURCE_ENABLE +USB.IPParameters=Sof_enable +USB.Sof_enable=ENABLE USB_DEVICE.CLASS_NAME_FS=CUSTOM_HID -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,USBD_CUSTOM_HID_REPORT_DESC_SIZE,USBD_CUSTOMHID_OUTREPORT_BUF_SIZE +USB_DEVICE.CUSTOM_HID_FS_BINTERVAL=0x01 +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,USBD_CUSTOM_HID_REPORT_DESC_SIZE,USBD_CUSTOMHID_OUTREPORT_BUF_SIZE,MANUFACTURER_STRING,VID,PID_CUSTOMHID_FS,CUSTOM_HID_FS_BINTERVAL +USB_DEVICE.MANUFACTURER_STRING=IMBEL - Industria de Material Belico do Brasil +USB_DEVICE.PID_CUSTOMHID_FS=\ 0x1997 USB_DEVICE.USBD_CUSTOMHID_OUTREPORT_BUF_SIZE=64 USB_DEVICE.USBD_CUSTOM_HID_REPORT_DESC_SIZE=38 +USB_DEVICE.VID=10684 USB_DEVICE.VirtualMode=CustomHid USB_DEVICE.VirtualModeFS=Custom_Hid_FS VP_ADC1_TempSens_Input.Mode=IN-TempSens diff --git a/Firmware/USB_Device/App/usbd_desc.c b/Firmware/USB_Device/App/usbd_desc.c index 977d064..d6a23d1 100644 --- a/Firmware/USB_Device/App/usbd_desc.c +++ b/Firmware/USB_Device/App/usbd_desc.c @@ -62,10 +62,10 @@ * @{ */ -#define USBD_VID 1155 +#define USBD_VID 10684 #define USBD_LANGID_STRING 1033 -#define USBD_MANUFACTURER_STRING "STMicroelectronics" -#define USBD_PID 22352 +#define USBD_MANUFACTURER_STRING "IMBEL - Industria de Material Belico do Brasil" +#define USBD_PID 0x1997 #define USBD_PRODUCT_STRING "STM32 Custom Human interface" #define USBD_CONFIGURATION_STRING "Custom HID Config" #define USBD_INTERFACE_STRING "Custom HID Interface" diff --git a/Firmware/USB_Device/Target/usbd_conf.c b/Firmware/USB_Device/Target/usbd_conf.c index 85ba857..2c5fd96 100644 --- a/Firmware/USB_Device/Target/usbd_conf.c +++ b/Firmware/USB_Device/Target/usbd_conf.c @@ -402,7 +402,7 @@ USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) hpcd_USB_FS.Init.dev_endpoints = 8; hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; hpcd_USB_FS.Init.phy_itface = PCD_PHY_EMBEDDED; - hpcd_USB_FS.Init.Sof_enable = DISABLE; + hpcd_USB_FS.Init.Sof_enable = ENABLE; hpcd_USB_FS.Init.low_power_enable = DISABLE; hpcd_USB_FS.Init.lpm_enable = DISABLE; hpcd_USB_FS.Init.battery_charging_enable = DISABLE; diff --git a/Firmware/USB_Device/Target/usbd_conf.h b/Firmware/USB_Device/Target/usbd_conf.h index 6888169..daea0d0 100644 --- a/Firmware/USB_Device/Target/usbd_conf.h +++ b/Firmware/USB_Device/Target/usbd_conf.h @@ -54,6 +54,8 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ +#define CUSTOM_HID_EPIN_SIZE 0x40U +#define CUSTOM_HID_EPOUT_SIZE 0x40U /* USER CODE END PV */ /** * @} @@ -81,7 +83,7 @@ /*---------- -----------*/ #define USBD_CUSTOM_HID_REPORT_DESC_SIZE 38U /*---------- -----------*/ -#define CUSTOM_HID_FS_BINTERVAL 0x5U +#define CUSTOM_HID_FS_BINTERVAL 0x01U /****************************************/ /* #define for FS and HS identification */