1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/**
******************************************************************************
* @file appli_mesh.h
* @author BLE Mesh Team
* @brief Header file for the user application file
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under Ultimate Liberty license
* SLA0044, the "License"; You may not use this file except in compliance with
* the License. You may obtain a copy of the License at:
* www.st.com/SLA0044
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __APPLI_MESH_H
#define __APPLI_MESH_H
/* Includes ------------------------------------------------------------------*/
#include "types.h"
#include "mesh_cfg_usr.h"
#include "mesh_cfg.h"
/* Exported macro ------------------------------------------------------------*/
/* MACROS for Power Level definitions */
#define POWER_LEVEL_LOW 0
#define TX_POWER_LEVEL_MINUS_18DBM 0 /* = -18 dBm, */
#define TX_POWER_LEVEL_MINUS_15DBM 1 /* = -15 dBm, */
#define TX_POWER_LEVEL_MINUS_12DBM 2 /* = -12 dBm, */
#define TX_POWER_LEVEL_MINUS_9DBM 3 /* = -9 dBm, */
#define TX_POWER_LEVEL_MINUS_6DBM 4 /* = -6 dBm, */
#define TX_POWER_LEVEL_MINUS_2DBM 5 /* = -2 dBm, */
#define TX_POWER_LEVEL_0DBM 6 /* = 0 dBm, */
#define TX_POWER_LEVEL_PLUS_5DBM 7 /* = 5 dBm. */
#define POWER_LEVEL_HIGH 1
#define TX_POWER_LEVEL_MINUS_14DBM 0 /* = -14 dBm, */
#define TX_POWER_LEVEL_MINUS_11DBM 1 /* = -11 dBm, */
#define TX_POWER_LEVEL_MINUS_8DBM 2 /* = -8 dBm, */
#define TX_POWER_LEVEL_MINUS_5DBM 3 /* = -5 dBm, */
#define TX_POWER_LEVEL_PLUS_2DBM 5 /* = 2 dBm, */
#define TX_POWER_LEVEL_PLUS_4DBM 6 /* = 4 dBm, */
#define TX_POWER_LEVEL_PLUS_8DBM 7 /* = 8 dBm */
#ifdef SAVE_MODEL_STATE_POWER_FAILURE_DETECTION
#define POWEROFF_PIN GPIO_PIN_12
#define POWEROFF_GPIO_PORT GPIOB
#define POWEROFF_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define POWEROFF_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
#define POWEROFF_EXTI_LINE GPIO_PIN_12
#define POWEROFF_EXTI_IRQn EXTI15_10_IRQn
#endif
typedef enum _prvn_nvm_state
{
NVM_INIT = 0,
NVM_SAVE_PENDING,
} prvn_nvm_state;
/* Exported variables ------------------------------------------------------- */
extern MOBLEUINT8 bdaddr[];
typedef struct
{
MOBLEUINT16 nodeAddress;
MOBLEUINT8 numOfElements;
MOBLEUINT8 Reserved1; /* For Alignment by 4*/
MOBLEUINT16 newNodeAddress;
MOBLEUINT8 newNodeElements;
prvn_nvm_state saveToNVM;
MOBLEUINT8 NewProvNodeDevKey[DEVICE_KEY_SIZE];
MOBLEUINT8 NewProvNodeAppKey[APP_KEY_SIZE];
MOBLEUINT8 NewProvNodeUUID[UUID_SIZE];
} NodeUnderProvisionParam_t;
extern NodeUnderProvisionParam_t NodeUnderProvisionParam;
extern MOBLEUINT16 Appli_SIG_Models[APPLICATION_NUMBER_OF_ELEMENTS][APPLICATION_SIG_MODELS_MAX_COUNT];
extern MOBLEUINT32 Appli_Vendor_Models[APPLICATION_NUMBER_OF_ELEMENTS][APPLICATION_VENDOR_MODELS_MAX_COUNT];
/* Exported Functions Prototypes ---------------------------------------------*/
MOBLE_RESULT Appli_BleStackInitCb(void);
MOBLE_RESULT Appli_BleSetTxPowerCb(void);
MOBLE_RESULT Appli_BleSetUUIDCb(MOBLEUINT8 *uuid_prefix_data);
MOBLE_RESULT Appli_BleSetProductInfoCB(MOBLEUINT8 *company_product_info);
void Appli_BleUnprovisionedIdentifyCb(MOBLEUINT8 data);
void Appli_BleGattConnectionCompleteCb(void);
void Appli_BleGattDisconnectionCompleteCb(void);
MOBLEUINT8 Appli_BleSetNumberOfElementsCb(void);
MOBLE_RESULT Appli_BleAttentionTimerCb(void);
void Appli_BleOutputOOBAuthCb(MOBLEUINT8* output_oob, MOBLEUINT8 size);
MOBLEUINT8* Appli_BleInputOOBAuthCb(MOBLEUINT8 size);
void Appli_BleSerialInputOOBValue(char *rcvdStringBuff, uint16_t rcvdStringSize);
MOBLEUINT8 Appli_BleDisableFilterCb(void);
void BLEMesh_PbAdvLinkCloseCb(void);
void Appli_IntensityControlPublishing(MOBLEUINT8* value);
int Appli_CheckBdMacAddr(void);
MOBLE_RESULT Appli_LedBlink(void);
MOBLE_RESULT Appli_LedStateCtrlCb(MOBLEUINT16 ctrl);
void Appli_CheckForUnprovision(void);
void Appli_Unprovision(void);
void Appli_Process(void);
void Appli_LedCtrl(void);
void Appli_Init(MOBLEUINT8 *flag);
MOBLE_ADDRESS GetAddressToConfigure(void);
MOBLE_ADDRESS GetNewAddressToProvision(void);
void SaveProvisionedNodeAddress(void);
MOBLEUINT8* GetNewProvNodeDevKey(void);
MOBLEUINT8* GetNewProvNodeAppKey(void);
void IntensityPublish(void);
MOBLE_RESULT BLEMesh_ScanDevices(neighbor_params_t *unprovDeviceArray, MOBLEUINT8 *noOfUnprovDevices);
MOBLE_RESULT BLEMesh_ProvisionDevice(neighbor_params_t *unprovDeviceArray, MOBLEUINT16 index);
void Start_SelfConfiguration (void);
void Appli_ProvisionerInit(void);
#endif /* __APPLI_MESH_H */
/******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
|