diff --git a/Core/Inc/i2c.h b/Core/Inc/i2c.h new file mode 100644 index 0000000..dcdd711 --- /dev/null +++ b/Core/Inc/i2c.h @@ -0,0 +1,51 @@ +/** + ****************************************************************************** + * @file i2c.h + * @brief This file contains all the function prototypes for + * the i2c.c file + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __I2C_H__ +#define __I2C_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_I2C2_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __I2C_H__ */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 645b59b..d91145d 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -85,7 +85,32 @@ void Error_Handler(void); #define USARTx_TX_GPIO_Port GPIOA /* USER CODE BEGIN Private defines */ +#define BUT1_Pin GPIO_PIN_0 +#define BUT1_GPIO_Port GPIOA +#define BUT1_EXTI_IRQn EXTI0_IRQn +#define VL53LX 1 + +#ifdef VL53LX +#define TOF_C_INT_Pin GPIO_PIN_3 +#define TOF_C_INT_GPIO_Port GPIOB +#define TOF_C_INT_EXTI_IRQn EXTI3_IRQn + +#define TOF_C_XSHUT_Pin GPIO_PIN_5 +#define TOF_C_XSHUT_GPIO_Port GPIOB +#endif +#ifdef STM32WLE5xx +#define I2C2_SCL_PIN GPIO_PIN_12 +#define I2C2_SDA_PIN GPIO_PIN_11 +#define I2C2_SCL_PORT GPIOA +#define I2C2_SDA_PORT GPIOA + +// FOR STM32WLE5CCU6 UFQFPN48 PA12 PA11 +#define I2C2_STANDARD_100K 0x00000E14 +#define I2C2_FAST_400K 0x00000004 +#define I2C2_FAST_PLUS_1M 0x00000000 + +#endif /* USER CODE END Private defines */ #ifdef __cplusplus diff --git a/Core/Inc/stm32wlxx_hal_conf.h b/Core/Inc/stm32wlxx_hal_conf.h index 556c59f..199d4f6 100644 --- a/Core/Inc/stm32wlxx_hal_conf.h +++ b/Core/Inc/stm32wlxx_hal_conf.h @@ -41,7 +41,7 @@ /*#define HAL_DAC_MODULE_ENABLED */ /*#define HAL_GTZC_MODULE_ENABLED */ /*#define HAL_HSEM_MODULE_ENABLED */ -/*#define HAL_I2C_MODULE_ENABLED */ +#define HAL_I2C_MODULE_ENABLED /*#define HAL_I2S_MODULE_ENABLED */ /*#define HAL_IPCC_MODULE_ENABLED */ /*#define HAL_IRDA_MODULE_ENABLED */ diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h index 1f15237..871fadc 100644 --- a/Core/Inc/sys_conf.h +++ b/Core/Inc/sys_conf.h @@ -75,13 +75,13 @@ extern "C" { * @brief Enable/Disable MCU Debugger pins (dbg serial wires) * @note by HW serial wires are ON by default, need to put them OFF to save power */ -#define DEBUGGER_ENABLED 0 +#define DEBUGGER_ENABLED 1 /** * @brief Disable Low Power mode * @note 0: LowPowerMode enabled. MCU enters stop2 mode, 1: LowPowerMode disabled. MCU enters sleep mode only */ -#define LOW_POWER_DISABLE 0 +#define LOW_POWER_DISABLE 1 /* USER CODE BEGIN EC */ diff --git a/Core/Src/dma.c b/Core/Src/dma.c index 459b3fd..01f8918 100644 --- a/Core/Src/dma.c +++ b/Core/Src/dma.c @@ -44,6 +44,19 @@ void MX_DMA_Init(void) __HAL_RCC_DMA1_CLK_ENABLE(); /* DMA interrupt init */ + + // I2C2 +#ifdef VL53LX + /* DMA1_Channel3_IRQn interrupt configuration */ + /* I2C2 RX */ + HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn); + /* DMA1_Channel4_IRQn interrupt configuration */ + /* I2C2 TX */ + HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); +#endif + /* DMA1_Channel5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 2, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 7cda6a6..709910c 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -79,6 +79,24 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct); +#ifdef VL53LX + /*Configure GPIO pins : TOF_C_INT_Pin TOF_R_INT_Pin */ + GPIO_InitStruct.Pin = TOF_C_INT_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; //GPIO_NOPULL; + HAL_GPIO_Init(TOF_C_INT_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : TOF_C_XSHUT_Pin */ + GPIO_InitStruct.Pin = TOF_C_XSHUT_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(TOF_C_XSHUT_GPIO_Port, &GPIO_InitStruct); + + HAL_NVIC_SetPriority(TOF_C_INT_EXTI_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TOF_C_INT_EXTI_IRQn); + +#endif /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); @@ -89,6 +107,7 @@ void MX_GPIO_Init(void) HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); + } /* USER CODE BEGIN 2 */ diff --git a/Core/Src/i2c.c b/Core/Src/i2c.c new file mode 100644 index 0000000..0b6b321 --- /dev/null +++ b/Core/Src/i2c.c @@ -0,0 +1,197 @@ +/** + ****************************************************************************** + * @file i2c.c + * @brief This file provides code for the configuration + * of the I2C instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "i2c.h" +#include "main.h" +/* USER CODE BEGIN 0 */ +I2C_HandleTypeDef hi2c2; +DMA_HandleTypeDef hdma_i2c2_rx; +DMA_HandleTypeDef hdma_i2c2_tx; +/* USER CODE END 0 */ + +/* I2C2 init function */ +/** + * @brief I2C2 Initialization Function + * @param None + * @retval None + */ +void MX_I2C2_Init(void) +{ + + /* USER CODE BEGIN I2C2_Init 0 */ + + /* USER CODE END I2C2_Init 0 */ + + /* USER CODE BEGIN I2C2_Init 1 */ + + /* USER CODE END I2C2_Init 1 */ + hi2c2.Instance = I2C2; + hi2c2.Init.Timing = I2C2_FAST_400K; + hi2c2.Init.OwnAddress1 = 0; + hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c2.Init.OwnAddress2 = 0; + hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c2) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C2_Init 2 */ + + /* USER CODE END I2C2_Init 2 */ + +} + +void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + if(i2cHandle->Instance==I2C2) + { + /* USER CODE BEGIN I2C2_MspInit 0 */ + + /* USER CODE END I2C2_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C2; + PeriphClkInitStruct.I2c2ClockSelection = RCC_I2C2CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**I2C2 GPIO Configuration + PA12 ------> I2C2_SCL + PA11 ------> I2C2_SDA + */ + GPIO_InitStruct.Pin = I2C2_SCL_PIN|I2C2_SDA_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; //GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_I2C2; + HAL_GPIO_Init(I2C2_SCL_PORT, &GPIO_InitStruct); + + /* I2C2 clock enable */ + __HAL_RCC_I2C2_CLK_ENABLE(); + + /* I2C2 DMA Init */ + /* I2C2_RX Init */ + hdma_i2c2_rx.Instance = DMA1_Channel3; + hdma_i2c2_rx.Init.Request = DMA_REQUEST_I2C2_RX; + hdma_i2c2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_i2c2_rx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_i2c2_rx.Init.MemInc = DMA_MINC_ENABLE; + hdma_i2c2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_i2c2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_i2c2_rx.Init.Mode = DMA_NORMAL; + hdma_i2c2_rx.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_i2c2_rx) != HAL_OK) + { + Error_Handler(); + } +#ifdef STM32WL55xx + if (HAL_DMA_ConfigChannelAttributes(&hdma_i2c2_rx, DMA_CHANNEL_NPRIV) != HAL_OK) + { + Error_Handler(); + } +#endif + __HAL_LINKDMA(i2cHandle,hdmarx,hdma_i2c2_rx); + + /* I2C2_TX Init */ + hdma_i2c2_tx.Instance = DMA1_Channel4; + hdma_i2c2_tx.Init.Request = DMA_REQUEST_I2C2_TX; + hdma_i2c2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_i2c2_tx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_i2c2_tx.Init.MemInc = DMA_MINC_ENABLE; + hdma_i2c2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_i2c2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_i2c2_tx.Init.Mode = DMA_NORMAL; + hdma_i2c2_tx.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_i2c2_tx) != HAL_OK) + { + Error_Handler(); + } +#ifdef STM32WL55xx + if (HAL_DMA_ConfigChannelAttributes(&hdma_i2c2_tx, DMA_CHANNEL_NPRIV) != HAL_OK) + { + Error_Handler(); + } +#endif + __HAL_LINKDMA(i2cHandle,hdmatx,hdma_i2c2_tx); + + /* USER CODE BEGIN I2C2_MspInit 1 */ + + /* USER CODE END I2C2_MspInit 1 */ + } +} + +void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) +{ + + if(i2cHandle->Instance==I2C2) + { + /* USER CODE BEGIN I2C2_MspDeInit 0 */ + + /* USER CODE END I2C2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C2_CLK_DISABLE(); + + /**I2C2 GPIO Configuration + PA12 ------> I2C2_SCL + PA11 ------> I2C2_SDA + */ + HAL_GPIO_DeInit(I2C2_SCL_PORT, I2C2_SCL_PIN); + + HAL_GPIO_DeInit(I2C2_SCL_PORT, I2C2_SDA_PIN); + + /* I2C2 DMA DeInit */ + HAL_DMA_DeInit(i2cHandle->hdmarx); + HAL_DMA_DeInit(i2cHandle->hdmatx); + + /* USER CODE BEGIN I2C2_MspDeInit 1 */ + + /* USER CODE END I2C2_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Src/main.c b/Core/Src/main.c index 54e48cd..3af2c74 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -23,6 +23,12 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ +#include "i2c.h" +#include "dma.h" +#include "usart.h" +#include "sys_app.h" +#include "app_tof.h" +#include "app_tof_peoplecount.h" /* USER CODE END Includes */ @@ -54,7 +60,12 @@ void SystemClock_Config(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ - +int _write(int file, char *ptr, int len) +{ + (void) file; + HAL_UART_Transmit (&huart2, (uint8_t*)ptr, len, 0xFFFF); + return len; +} /* USER CODE END 0 */ /** @@ -85,9 +96,14 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); + MX_I2C2_Init(); + MX_DMA_Init(); + MX_LoRaWAN_Init(); /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ /* Infinite loop */ diff --git a/Core/Src/stm32wlxx_it.c b/Core/Src/stm32wlxx_it.c index 66231ac..01b9d94 100644 --- a/Core/Src/stm32wlxx_it.c +++ b/Core/Src/stm32wlxx_it.c @@ -60,7 +60,10 @@ extern SUBGHZ_HandleTypeDef hsubghz; extern DMA_HandleTypeDef hdma_usart2_tx; extern UART_HandleTypeDef huart2; /* USER CODE BEGIN EV */ - +#ifdef VL53LX +extern DMA_HandleTypeDef hdma_i2c2_rx; +extern DMA_HandleTypeDef hdma_i2c2_tx; +#endif /* USER CODE END EV */ /******************************************************************************/ @@ -242,6 +245,38 @@ void EXTI1_IRQHandler(void) /* USER CODE END EXTI1_IRQn 1 */ } +/* I2C2 */ +/** + * @brief This function handles DMA1 Channel 3 Interrupt. + */ +void DMA1_Channel3_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel3_IRQn 0 */ + + /* USER CODE END DMA1_Channel3_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_i2c2_rx); + /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */ + + /* USER CODE END DMA1_Channel3_IRQn 1 */ +} + + +/** + * @brief This function handles DMA1 Channel 4 Interrupt. + */ +void DMA1_Channel4_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_i2c2_tx); + /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ + + /* USER CODE END DMA1_Channel4_IRQn 1 */ +} + + + /** * @brief This function handles DMA1 Channel 5 Interrupt. */ diff --git a/Core/Src/sys_app.c b/Core/Src/sys_app.c index 705ba80..2b66462 100644 --- a/Core/Src/sys_app.c +++ b/Core/Src/sys_app.c @@ -32,7 +32,7 @@ #include "sys_sensors.h" /* USER CODE BEGIN Includes */ - +#include "app_tof_peoplecount.h" /* USER CODE END Includes */ /* External variables ---------------------------------------------------------*/ @@ -117,7 +117,7 @@ void SystemApp_Init(void) /*Initialize the Sensors */ EnvSensors_Init(); - + STS_TOF_VL53LX_PeopleCounting_Process_Init(); /*Init low power manager*/ UTIL_LPM_Init(); /* Disable Stand-by mode */ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 0eabe19..e71810a 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -36,6 +36,8 @@ #include "flash_if.h" /* USER CODE BEGIN Includes */ +#include "app_tof_pin_conf.h" +#include "app_tof_peoplecount.h" /* USER CODE END Includes */ @@ -297,6 +299,12 @@ static TxEventType_t EventType = TX_ON_TIMER; */ static UTIL_TIMER_Object_t TxTimer; +/** + * @brief Timer to handle the application ToF Ranging Scan + */ +static UTIL_TIMER_Object_t WakeUpScanTimer; + + /** * @brief Tx Timer period */ @@ -342,7 +350,7 @@ static UTIL_TIMER_Object_t JoinLedTimer; /* Exported functions ---------------------------------------------------------*/ /* USER CODE BEGIN EF */ - +extern volatile uint8_t ToF_EventDetected; /* USER CODE END EF */ void LoRaWAN_Init(void) @@ -434,6 +442,8 @@ void LoRaWAN_Init(void) } /* USER CODE BEGIN LoRaWAN_Init_Last */ + UTIL_TIMER_Create(&WakeUpScanTimer, 50, UTIL_TIMER_PERIODIC, (void*)STS_TOF_VL53LX_PeopleCounting_Process_Start, NULL); + UTIL_TIMER_Start(&WakeUpScanTimer); /* USER CODE END LoRaWAN_Init_Last */ } @@ -457,6 +467,10 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) case BUT3_Pin: UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), CFG_SEQ_Prio_0); break; + case TOF_INT_EXTI_PIN: + ToF_EventDetected = 1; + break; + default: break; } @@ -556,6 +570,7 @@ static void SendTxData(void) uint8_t batteryLevel = GetBatteryLevel(); sensor_t sensor_data; UTIL_TIMER_Time_t nextTxIn = 0; + sts_people_count_sensor_data_t sts_p2_sensor_data; if (LmHandlerIsBusy() == false) { @@ -572,12 +587,14 @@ static void SendTxData(void) #endif /* CAYENNE_LPP */ EnvSensors_Read(&sensor_data); - +#ifdef VL53LX + STS_people_count_sensor_Read(&sts_p2_sensor_data); +#endif APP_LOG(TS_ON, VLEVEL_M, "VDDA: %d\r\n", batteryLevel); APP_LOG(TS_ON, VLEVEL_M, "temp: %d\r\n", (int16_t)(sensor_data.temperature)); - AppData.Port = LORAWAN_USER_APP_PORT; - + //AppData.Port = LORAWAN_USER_APP_PORT; + AppData.Port = 106; /* STS-P2 Data Port */ #ifdef CAYENNE_LPP CayenneLppReset(); CayenneLppAddBarometricPressure(channel++, sensor_data.pressure); @@ -628,7 +645,29 @@ static void SendTxData(void) AppData.Buffer[i++] = (uint8_t)((altitudeGps >> 8) & 0xFF); AppData.Buffer[i++] = (uint8_t)(altitudeGps & 0xFF); } +#ifdef VL53LX + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Walk_In_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Walk_In_People_Count & 0xFF); + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Walk_Out_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Walk_Out_People_Count & 0xFF); + + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Walk_Around_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Walk_Around_People_Count & 0xFF); +#endif +#ifdef VL53LX + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Count_Period) & 0xFF); + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Count_Period_Unit) & 0xFF); + + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Sum_Day_Walk_In_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Sum_Day_Walk_In_People_Count & 0xFF); + + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Sum_Day_Walk_Out_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Sum_Day_Walk_Out_People_Count & 0xFF); + + AppData.Buffer[i++] = (uint8_t)((sts_p2_sensor_data.Sum_Day_Walk_Around_People_Count>>8) & 0xFF); + AppData.Buffer[i++] = (uint8_t)(sts_p2_sensor_data.Sum_Day_Walk_Around_People_Count & 0xFF); +#endif AppData.BufferSize = i; #endif /* CAYENNE_LPP */ @@ -743,6 +782,13 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) { APP_LOG(TS_OFF, VLEVEL_M, "OTAA =====================\r\n"); } + AppData.Port = 1; + AppData.BufferSize = 2; + AppData.Buffer[0]=0x38; + AppData.Buffer[1]=0x38; + LmHandlerParams.IsTxConfirmed = true; + int status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false); + LmHandlerParams.IsTxConfirmed = false; } else { @@ -750,6 +796,7 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) } APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); + } /* USER CODE END OnJoinRequest_1 */ } diff --git a/README.md b/README.md index e9407ef..f87cc99 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ --- STS-P2 --- - + 2024 09 11 START P2A diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject index 8ba73e3..d38950e 100644 --- a/STM32CubeIDE/.cproject +++ b/STM32CubeIDE/.cproject @@ -42,6 +42,9 @@