Devchannel Team / X_NUCLEO_IDB0XA1

Dependents:   Hello_BLE F446RE-BLE

Fork of X_NUCLEO_IDB0XA1 by ST

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers bluenrg_IFR.c Source File

bluenrg_IFR.c

00001 #ifndef __MBED__
00002 
00003 #include "hal.h"
00004 #include "hal_types.h"
00005 #include "ble_status.h"
00006 #include "bluenrg_updater_aci.h"
00007 #include "bluenrg_utils.h"
00008  
00009 /************** Do not change this define section ************/
00010  
00011 #define BLUENRG_32_MHZ          1
00012 #define BLUENRG_32_MHZ_RO       2
00013 #define BLUENRG_16_MHZ          3
00014 #define BLUENRG_16_MHZ_RO       4
00015 #define BLUENRG_CUSTOM_CONFIG   5
00016  
00017 #define MASTER_SCA_500ppm       0 // 251 ppm to 500 ppm
00018 #define MASTER_SCA_250ppm       1 // 151 ppm to 250 ppm
00019 #define MASTER_SCA_150ppm       2 // 101 ppm to 150 ppm
00020 #define MASTER_SCA_100ppm       3 // 76 ppm to 100 ppm
00021 #define MASTER_SCA_75ppm        4 // 51 ppm to 75 ppm
00022 #define MASTER_SCA_50ppm        5 // 31 ppm to 50 ppm
00023 #define MASTER_SCA_30ppm        6 // 21 ppm to 30 ppm
00024 #define MASTER_SCA_20ppm        7 // 0 ppm to 20 ppm
00025  
00026 #define SMPS_4MHz               0
00027 #define SMPS_8MHz               1
00028  
00029 #ifndef SMPS_FREQUENCY
00030 #define SMPS_FREQUENCY          SMPS_4MHz
00031 #endif
00032  
00033 #if !BLUENRG_MS && (SMPS_FREQUENCY == SMPS_8MHz)
00034 #error Unsupported SMPS_FREQUENCY
00035 #endif
00036  
00037 /************************************************************/
00038  
00039  
00040 /************** Definitions that can be changed. ************/
00041  
00042 #define STACK_MODE              2
00043 #define SLAVE_SCA_PPM           100
00044 #define MASTER_SCA              MASTER_SCA_100ppm
00045 #define HS_STARTUP_TIME_US      512
00046 #define DAY                     11
00047 #define MONTH                   02
00048 #define YEAR                    15
00049 /************************************************************/
00050  
00051 /*
00052  * IMPORTANT!
00053  * This IFR configurations are only for BlueNRG Firmware v6.4 and 7.1.
00054  */
00055  
00056 #if BLUENRG_CONFIG == BLUENRG_32_MHZ
00057  
00058 const IFR_config_TypeDef IFR_config = {
00059 #if BLUENRG_MS
00060 #if SMPS_FREQUENCY == SMPS_4MHz
00061   0x02,0x3A,0x44,0x02,
00062   0x34,0x5B,0x02,0x39,
00063   0xA2,0x02,0x3C,0x20,
00064   0x00,0xFF,0xFF,0xFF,
00065 #elif SMPS_FREQUENCY == SMPS_8MHz
00066   0x02,0x3A,0x44,0x02,
00067   0x34,0x5B,0x02,0x39,
00068   0xAE,0x00,0xFF,0xFF,
00069   0x00,0xFF,0xFF,0xFF,
00070 #else
00071 #error Incorrect SMPS_FREQUENCY
00072 #endif /* SMPS_FREQUENCY */
00073 #else
00074   0x02,0x3A,0x5C,0x02,
00075   0x39,0xA2,0x02,0x34,
00076   0x5B,0x00,0xFF,0xFF,
00077   0xFF,0xFF,0xFF,0xFF,
00078 #endif /* BLUENRG_MS */
00079   0xFF,0xFF,0xFF,0xFF,
00080   0xFF,0xFF,0xFF,0xFF,
00081   0xFF,0xFF,0xFF,0xFF,
00082   0xFF,0xFF,0xFF,0xFF,
00083   0xFF,0xFF,0xFF,0xFF,
00084   0xFF,0xFF,0xFF,0xFF,
00085   0xFF,0xFF,0xFF,0xFF,
00086   0xFF,0xFF,0xFF,0xFF,
00087   0xFF,0xFF,0xFF,0xFF,
00088   0xFF,0xFF,0xFF,0xFF,
00089   0xFF,0xFF,0xFF,0xFF,
00090   0xFF,0xFF,0xFF,0xFF,
00091   
00092   0x02,0x1C,0x43,0x02,
00093   0x20,0xEC,0x02,0x1F,
00094   0xAF,0x00,0xFF,0xFF,
00095   0xFF,0xFF,0xFF,0xFF,
00096   0xFF,0xFF,0xFF,0xFF,
00097   0xFF,0xFF,0xFF,0xFF,
00098   0xFF,0xFF,0xFF,0xFF,
00099   0xFF,0xFF,0xFF,0xFF,
00100   0xFF,0xFF,0xFF,0xFF,
00101   0xFF,0xFF,0xFF,0xFF,
00102   0xFF,0xFF,0xFF,0xFF,
00103   0xFF,0xFF,0xFF,0xFF,
00104   0xFF,0xFF,0xFF,0xFF,
00105   0xFF,0xFF,0xFF,0xFF,
00106   0xFF,0xFF,0xFF,0xFF,
00107   0xFF,0xFF,0xFF,0xFF,
00108   
00109   STACK_MODE,
00110   0xFF,0xFF,0xFF,
00111   0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
00112   0xFFFFFFFF,
00113   htobl(0x00190000),
00114   htobl(0x0028F5C2),
00115   htobs(SLAVE_SCA_PPM),
00116   MASTER_SCA,
00117   0xFF,
00118   htobs(FROM_US_TO_SYS_TIME(HS_STARTUP_TIME_US)),
00119   0xFF,0xFF,
00120   0xFFFFFFFF,
00121   0xFF,   
00122   INT_TO_BCD(YEAR),INT_TO_BCD(MONTH),INT_TO_BCD(DAY),
00123   0xFFFFFFFF,  
00124   0xFFFFFFFF,
00125   0xFFFFFFFF,
00126   0xFFFFFFFF,
00127   0xFFFFFFFF
00128 };
00129  
00130 #elif BLUENRG_CONFIG == BLUENRG_32_MHZ_RO
00131  
00132 const IFR_config_TypeDef IFR_config = {
00133 #if BLUENRG_MS
00134 #if SMPS_FREQUENCY == SMPS_4MHz
00135   0x02,0x3A,0x44,0x02,
00136   0x34,0x1B,0x02,0x39,
00137   0xA2,0x02,0x3C,0x20,
00138   0x00,0xFF,0xFF,0xFF,
00139 #elif SMPS_FREQUENCY == SMPS_8MHz
00140   0x02,0x3A,0x44,0x02,
00141   0x34,0x1B,0x02,0x39,
00142   0xAE,0x00,0xFF,0xFF,
00143   0x00,0xFF,0xFF,0xFF,
00144 #else
00145 #error Incorrect SMPS_FREQUENCY
00146 #endif /* SMPS_FREQUENCY */  
00147 #else
00148   0x02,0x3A,0x5C,0x02,
00149   0x39,0xA2,0x02,0x34,
00150   0x1B,0x00,0xFF,0xFF,
00151   0xFF,0xFF,0xFF,0xFF,
00152 #endif /* BLUENRG_MS */
00153   0xFF,0xFF,0xFF,0xFF,
00154   0xFF,0xFF,0xFF,0xFF,
00155   0xFF,0xFF,0xFF,0xFF,
00156   0xFF,0xFF,0xFF,0xFF,
00157   0xFF,0xFF,0xFF,0xFF,
00158   0xFF,0xFF,0xFF,0xFF,
00159   0xFF,0xFF,0xFF,0xFF,
00160   0xFF,0xFF,0xFF,0xFF,
00161   0xFF,0xFF,0xFF,0xFF,
00162   0xFF,0xFF,0xFF,0xFF,
00163   0xFF,0xFF,0xFF,0xFF,
00164   0xFF,0xFF,0xFF,0xFF,
00165   
00166   0x02,0x1C,0x43,0x02,
00167   0x20,0xEC,0x02,0x1F,
00168   0xAF,0x00,0xFF,0xFF,
00169   0xFF,0xFF,0xFF,0xFF,
00170   0xFF,0xFF,0xFF,0xFF,
00171   0xFF,0xFF,0xFF,0xFF,
00172   0xFF,0xFF,0xFF,0xFF,
00173   0xFF,0xFF,0xFF,0xFF,
00174   0xFF,0xFF,0xFF,0xFF,
00175   0xFF,0xFF,0xFF,0xFF,
00176   0xFF,0xFF,0xFF,0xFF,
00177   0xFF,0xFF,0xFF,0xFF,
00178   0xFF,0xFF,0xFF,0xFF,
00179   0xFF,0xFF,0xFF,0xFF,
00180   0xFF,0xFF,0xFF,0xFF,
00181   0xFF,0xFF,0xFF,0xFF,
00182   
00183   STACK_MODE,
00184   0xFF,0xFF,0xFF,
00185   0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
00186   0xFFFFFFFF,
00187   0xFFFFFFFF,
00188   0xFFFFFFFF,
00189   htobs(0x01F4), 
00190   0x00,
00191   0xFF,
00192   htobs(FROM_US_TO_SYS_TIME(HS_STARTUP_TIME_US)),
00193   0xFF,0xFF,
00194   0xFFFFFFFF,
00195   0xFF,   
00196   INT_TO_BCD(YEAR),INT_TO_BCD(MONTH),INT_TO_BCD(DAY),
00197   0xFFFFFFFF,  
00198   0xFFFFFFFF,
00199   0xFFFFFFFF,
00200   0xFFFFFFFF,
00201   0xFFFFFFFF  
00202 };
00203  
00204 #elif BLUENRG_CONFIG == BLUENRG_16_MHZ
00205  
00206 const IFR_config_TypeDef IFR_config = {
00207 #if BLUENRG_MS
00208 #if SMPS_FREQUENCY == SMPS_4MHz
00209   0x02,0x3A,0x40,0x02,
00210   0x34,0x5B,0x02,0x39,
00211   0xA2,0x02,0x3C,0x20,
00212   0x00,0xFF,0xFF,0xFF,
00213 #elif SMPS_FREQUENCY == SMPS_8MHz
00214   0x02,0x3A,0x40,0x02,
00215   0x34,0x5B,0x02,0x39,
00216   0xAE,0x00,0xFF,0xFF,
00217   0x00,0xFF,0xFF,0xFF,
00218 #else
00219 #error Incorrect SMPS_FREQUENCY
00220 #endif /* SMPS_FREQUENCY */    
00221 #else
00222   0x02,0x3A,0x58,0x02,
00223   0x39,0xA2,0x02,0x34,
00224   0x5B,0x00,0xFF,0xFF,
00225   0xFF,0xFF,0xFF,0xFF,
00226 #endif /* BLUENRG_MS */
00227   0xFF,0xFF,0xFF,0xFF,
00228   0xFF,0xFF,0xFF,0xFF,
00229   0xFF,0xFF,0xFF,0xFF,
00230   0xFF,0xFF,0xFF,0xFF,
00231   0xFF,0xFF,0xFF,0xFF,
00232   0xFF,0xFF,0xFF,0xFF,
00233   0xFF,0xFF,0xFF,0xFF,
00234   0xFF,0xFF,0xFF,0xFF,
00235   0xFF,0xFF,0xFF,0xFF,
00236   0xFF,0xFF,0xFF,0xFF,
00237   0xFF,0xFF,0xFF,0xFF,
00238   0xFF,0xFF,0xFF,0xFF,
00239   
00240   0x02,0x1C,0x43,0x02,
00241   0x20,0xEC,0x02,0x1F,
00242   0xAF,0x00,0xFF,0xFF,
00243   0xFF,0xFF,0xFF,0xFF,
00244   0xFF,0xFF,0xFF,0xFF,
00245   0xFF,0xFF,0xFF,0xFF,
00246   0xFF,0xFF,0xFF,0xFF,
00247   0xFF,0xFF,0xFF,0xFF,
00248   0xFF,0xFF,0xFF,0xFF,
00249   0xFF,0xFF,0xFF,0xFF,
00250   0xFF,0xFF,0xFF,0xFF,
00251   0xFF,0xFF,0xFF,0xFF,
00252   0xFF,0xFF,0xFF,0xFF,
00253   0xFF,0xFF,0xFF,0xFF,
00254   0xFF,0xFF,0xFF,0xFF,
00255   0xFF,0xFF,0xFF,0xFF,
00256   
00257   STACK_MODE,
00258   0xFF,0xFF,0xFF,
00259   0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
00260   0xFFFFFFFF,
00261   htobl(0x00190000),
00262   htobl(0x0028F5C2),
00263   htobs(SLAVE_SCA_PPM), 
00264   MASTER_SCA,
00265   0xFF,
00266   htobs(FROM_US_TO_SYS_TIME(HS_STARTUP_TIME_US)),
00267   0xFF,0xFF,
00268   0xFFFFFFFF,
00269   0xFF,   
00270   INT_TO_BCD(YEAR),INT_TO_BCD(MONTH),INT_TO_BCD(DAY),
00271   0xFFFFFFFF,  
00272   0xFFFFFFFF,
00273   0xFFFFFFFF,
00274   0xFFFFFFFF,
00275   0xFFFFFFFF
00276  
00277 };
00278  
00279 #elif BLUENRG_CONFIG == BLUENRG_16_MHZ_RO
00280  
00281 const IFR_config_TypeDef IFR_config = {
00282 #if BLUENRG_MS
00283 #if SMPS_FREQUENCY == SMPS_4MHz
00284   0x02,0x3A,0x40,0x02,
00285   0x34,0x1B,0x02,0x39,
00286   0xA2,0x02,0x3C,0x20,
00287   0x00,0xFF,0xFF,0xFF,
00288 #elif SMPS_FREQUENCY == SMPS_8MHz
00289   0x02,0x3A,0x40,0x02,
00290   0x34,0x1B,0x02,0x39,
00291   0xAE,0x00,0xFF,0xFF,
00292   0x00,0xFF,0xFF,0xFF,
00293 #else
00294 #error Incorrect SMPS_FREQUENCY
00295 #endif /* SMPS_FREQUENCY */    
00296 #else
00297   0x02,0x3A,0x58,0x02,
00298   0x39,0xA2,0x02,0x34,
00299   0x1B,0x00,0xFF,0xFF,
00300   0xFF,0xFF,0xFF,0xFF,
00301 #endif /* BLUENRG_MS */
00302   0xFF,0xFF,0xFF,0xFF,
00303   0xFF,0xFF,0xFF,0xFF,
00304   0xFF,0xFF,0xFF,0xFF,
00305   0xFF,0xFF,0xFF,0xFF,
00306   0xFF,0xFF,0xFF,0xFF,
00307   0xFF,0xFF,0xFF,0xFF,
00308   0xFF,0xFF,0xFF,0xFF,
00309   0xFF,0xFF,0xFF,0xFF,
00310   0xFF,0xFF,0xFF,0xFF,
00311   0xFF,0xFF,0xFF,0xFF,
00312   0xFF,0xFF,0xFF,0xFF,
00313   0xFF,0xFF,0xFF,0xFF,
00314   
00315   0x02,0x1C,0x43,0x02,
00316   0x20,0xEC,0x02,0x1F,
00317   0xAF,0x00,0xFF,0xFF,
00318   0xFF,0xFF,0xFF,0xFF,
00319   0xFF,0xFF,0xFF,0xFF,
00320   0xFF,0xFF,0xFF,0xFF,
00321   0xFF,0xFF,0xFF,0xFF,
00322   0xFF,0xFF,0xFF,0xFF,
00323   0xFF,0xFF,0xFF,0xFF,
00324   0xFF,0xFF,0xFF,0xFF,
00325   0xFF,0xFF,0xFF,0xFF,
00326   0xFF,0xFF,0xFF,0xFF,
00327   0xFF,0xFF,0xFF,0xFF,
00328   0xFF,0xFF,0xFF,0xFF,
00329   0xFF,0xFF,0xFF,0xFF,
00330   0xFF,0xFF,0xFF,0xFF,
00331   
00332   STACK_MODE,
00333   0xFF,0xFF,0xFF,
00334   0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
00335   0xFFFFFFFF,
00336   0xFFFFFFFF,
00337   0xFFFFFFFF,
00338   htobs(0x01F4), 
00339   0x00,
00340   0xFF,
00341   htobs(FROM_US_TO_SYS_TIME(HS_STARTUP_TIME_US)),
00342   0xFF,0xFF,
00343   0xFFFFFFFF,
00344   0xFF,   
00345   INT_TO_BCD(YEAR),INT_TO_BCD(MONTH),INT_TO_BCD(DAY),
00346   0xFFFFFFFF,  
00347   0xFFFFFFFF,
00348   0xFFFFFFFF,
00349   0xFFFFFFFF,
00350   0xFFFFFFFF  
00351 };
00352  
00353 #elif BLUENRG_CONFIG == BLUENRG_CUSTOM_CONFIG
00354 /* Copy and paste here your custom IFR_config structure. It can be generated
00355  * with BlueNRG GUI.
00356  */
00357 #else
00358 #warning BLUENRG_CONFIG not valid
00359 #endif
00360 
00361 #endif // !__MBED__