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

appli_mesh.h « app « STM32_WPAN « BLE_MeshLightingProvisioner « 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: 353e066641f27ef0d7dbabce22418f1de2151925 (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
127
128
129
130
131
132
133
/**
  ******************************************************************************
  * @file    appli_mesh.h
  * @author  BLE Mesh Team
  * @brief   Header file for the user application file 
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2020 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);
void Start_SelfConfiguration (void);
void Appli_ProvisionerInit(void);
void Appli_StartProvisionerMode(MOBLEUINT8 mode);

void Appli_GetPublicationParamsCb(model_publicationparams_t*);

MOBLEUINT16 PWM_CoolValue(float colourValue ,float brightValue);
MOBLEUINT16 PWM_WarmValue(float colourValue ,float brightValue);
MOBLEUINT16 PwmValueMapping(MOBLEUINT16 setValue , MOBLEUINT16 maxRange , MOBLEINT16 minRange);

MOBLE_RESULT BLEMesh_ScanDevices(neighbor_params_t *unprovDeviceArray, MOBLEUINT8 *noOfUnprovDevices);
MOBLE_RESULT BLEMesh_ProvisionDevice(neighbor_params_t *unprovDeviceArray, MOBLEUINT16 index);

#endif /* __APPLI_MESH_H */

/******************* (C) COPYRIGHT 2020 STMicroelectronics *****END OF FILE****/