BlueNRG-MS pack for STM32CubeMX: includes/bluenrg_utils.h Source File

STM32CubeMX BlueNRG-MS

BlueNRG-MS pack for STM32CubeMX  V4.4.0
The BlueNRG-MS pack is an additional software for STM32CubeMX.
bluenrg_utils.h
Go to the documentation of this file.
1 /******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
2 * File Name : bluenrg_utils.h
3 * Author : AMS - VMA, RF Application Team
4 * Version : V1.0.1
5 * Date : 03-October-2014
6 * Description : Header file for BlueNRG utility functions
7 ********************************************************************************
8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
14 *******************************************************************************/
15 
16 /* Define to prevent recursive inclusion -------------------------------------*/
17 #ifndef __BLUENRG_UTILS_H
18 #define __BLUENRG_UTILS_H
19 
20 #ifdef __cplusplus
21  extern "C" {
22 #endif
23 
24 /* Includes ------------------------------------------------------------------*/
25 #include "bluenrg_types.h"
26 
27 /* Exported types ------------------------------------------------------------*/
28 typedef struct{
29  uint8_t stack_mode;
30  uint8_t day;
31  uint8_t month;
32  uint8_t year;
33  uint16_t slave_sca_ppm;
34  uint8_t master_sca;
35  uint16_t hs_startup_time; /* In system time units*/
37 
41 typedef __packed struct{
43  uint8_t hot_ana_config_table[64];
44  uint8_t stack_mode;
45  uint8_t gpio_config;
46  uint8_t rsrvd1[2];
47  uint32_t rsrvd2[3];
50  uint32_t ls_crystal_freq;
51  uint16_t slave_sca_ppm;
52  uint8_t master_sca;
53  uint8_t rsrvd3;
54  uint16_t hs_startup_time; /* In system time units*/
55  uint8_t rsrvd4[2];
56  uint32_t uid;
57  uint8_t rsrvd5;
58  uint8_t year;
59  uint8_t month;
60  uint8_t day;
61  uint32_t unused[5];
63 
64 /* Exported constants --------------------------------------------------------*/
65 extern const IFR_config_TypeDef IFR_config;
66 
67 /* Exported macros -----------------------------------------------------------*/
68 #define FROM_US_TO_SYS_TIME(us) ((uint16_t)(us/2.4414)+1)
69 #define FROM_SYS_TIME_TO_US(sys) ((uint16_t)(sys*2.4414))
70 
71 /* Convert 2 digit BCD number to an integer */
72 #define BCD_TO_INT(bcd) ((bcd & 0xF) + ((bcd & 0xF0) >> 4)*10)
73 
74 /* Convert 2 digit number to a BCD number */
75 #define INT_TO_BCD(n) ((((uint8_t)n/10)<<4) + (uint8_t)n%10)
76 
80 #define BLE_UTIL_SUCCESS 0
81 #define BLE_UTIL_UNSUPPORTED_VERSION 1
82 #define BLE_UTIL_WRONG_IMAGE_SIZE 2
83 #define BLE_UTIL_ACI_ERROR 3
84 #define BLE_UTIL_CRC_ERROR 4
85 #define BLE_UTIL_PARSE_ERROR 5
86 #define BLE_UTIL_WRONG_VERIFY 6
87 
88 /* Exported functions ------------------------------------------------------- */
99 int program_device(const uint8_t *fw_image, uint32_t fw_size);
100 
109 int read_IFR(uint8_t data[192]);
110 
118 uint8_t verify_IFR(const IFR_config_TypeDef *ifr_data);
119 
126 int program_IFR(const IFR_config_TypeDef *ifr_image);
127 
134 void parse_IFR_data_config(const uint8_t data[64], IFR_config2_TypeDef *IFR_config);
135 
142 int IFR_validate(IFR_config2_TypeDef *IFR_config);
143 
159 void change_IFR_data_config(IFR_config2_TypeDef *IFR_config, uint8_t data[64]);
160 
168 uint8_t getBlueNRGVersion(uint8_t *hwVersion, uint16_t *fwVersion);
169 
176 uint8_t getBlueNRGUpdaterVersion(uint8_t *version);
177 
183 uint8_t isHWBootloader_Patched(void);
184 
185 #ifdef __cplusplus
186 }
187 #endif
188 
189 #endif /*__BLUENRG_UTILS_H */
190 
191 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint16_t hs_startup_time
Definition: bluenrg_utils.h:54
uint32_t unused[5]
Definition: bluenrg_utils.h:61
uint8_t cold_ana_act_config_table[64]
Definition: bluenrg_utils.h:42
uint8_t isHWBootloader_Patched(void)
Verifies if the bootloader is patched or not. This function shall be used to fix a bug on the HW boot...
Definition: bluenrg_utils.c:388
uint16_t slave_sca_ppm
Definition: bluenrg_utils.h:51
void change_IFR_data_config(IFR_config2_TypeDef *IFR_config, uint8_t data[64])
Modify IFR data. (Last 64-bytes block).
Definition: bluenrg_utils.c:236
uint8_t rsrvd1[2]
Definition: bluenrg_utils.h:46
uint8_t rsrvd5
Definition: bluenrg_utils.h:57
uint8_t hot_ana_config_table[64]
Definition: bluenrg_utils.h:43
int program_device(const uint8_t *fw_image, uint32_t fw_size)
Flash a new firmware using internal bootloader.
Definition: bluenrg_utils.c:87
int read_IFR(uint8_t data[192])
Read raw data from IFR (3 64-bytes blocks).
int IFR_validate(IFR_config2_TypeDef *IFR_config)
Check for the correctness of parsed data.
Definition: bluenrg_utils.c:214
uint32_t ls_crystal_period
Definition: bluenrg_utils.h:49
uint8_t master_sca
Definition: bluenrg_utils.h:52
uint16_t slave_sca_ppm
Definition: bluenrg_utils.h:33
int program_IFR(const IFR_config_TypeDef *ifr_image)
Program raw data to IFR (3 64-bytes blocks).
Definition: bluenrg_utils.c:248
void parse_IFR_data_config(const uint8_t data[64], IFR_config2_TypeDef *IFR_config)
Parse IFR raw data.
Definition: bluenrg_utils.c:203
uint8_t gpio_config
Definition: bluenrg_utils.h:45
uint32_t uid
Definition: bluenrg_utils.h:56
uint8_t day
Definition: bluenrg_utils.h:30
uint8_t day
Definition: bluenrg_utils.h:60
uint8_t getBlueNRGUpdaterVersion(uint8_t *version)
Get BlueNRG updater version.
Definition: bluenrg_utils.c:370
Definition: bluenrg_utils.h:28
uint32_t max_conn_event_time
Definition: bluenrg_utils.h:48
uint8_t stack_mode
Definition: bluenrg_utils.h:44
uint8_t month
Definition: bluenrg_utils.h:31
uint8_t rsrvd4[2]
Definition: bluenrg_utils.h:55
uint8_t month
Definition: bluenrg_utils.h:59
#define PACKED
Definition: bluenrg_types.h:63
uint8_t getBlueNRGVersion(uint8_t *hwVersion, uint16_t *fwVersion)
Get BlueNRG hardware and firmware version.
Definition: bluenrg_utils.c:351
uint8_t rsrvd3
Definition: bluenrg_utils.h:53
uint8_t master_sca
Definition: bluenrg_utils.h:34
uint32_t ls_crystal_freq
Definition: bluenrg_utils.h:50
uint8_t verify_IFR(const IFR_config_TypeDef *ifr_data)
Verify raw data from IFR (3 64-bytes blocks).
Definition: bluenrg_utils.c:325
uint32_t rsrvd2[3]
Definition: bluenrg_utils.h:47
__packed struct @0 IFR_config_TypeDef
const IFR_config_TypeDef IFR_config
uint8_t year
Definition: bluenrg_utils.h:32
uint8_t stack_mode
Definition: bluenrg_utils.h:29
uint8_t year
Definition: bluenrg_utils.h:58
uint16_t hs_startup_time
Definition: bluenrg_utils.h:35
Generated on Mon Apr 15 2019 18:10:39 for BlueNRG-MS pack for STM32CubeMX by   doxygen 1.8.13