Welcome to mirror list, hosted at ThFree Co, Russian Federation.

appli_mesh.h « app « STM32_WPAN « BLE_MeshLightingPRFNode « BLE « Applications « P-NUCLEO-WB55.Nucleo « Projects - github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ad831f2cdd82eea27f81faa4c34ef93c1f4bfe68 (plain)
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>&copy; 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****/