diff options
Diffstat (limited to 'Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h')
-rw-r--r-- | Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h | 592 |
1 files changed, 547 insertions, 45 deletions
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h index d9e28450e..e2d001e8f 100644 --- a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h +++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Inc/common.h @@ -21,46 +21,431 @@ /* Includes ------------------------------------------------------------------*/ #include "types.h" +#include "ble_mesh.h" -#define GENERIC_VALID_FLAG 0xAA +/* Exported macro ------------------------------------------------------------*/ +/* Macros defined for the number of bytes saved, number of bytes dedicated + for ganeric model and light model */ +//#define APP_NVM_GENERIC_MODEL_SIZE 16U +//#define APP_NVM_LIGHT_MODEL_SIZE 32U +#define APP_NVM_LIGHT_LC_MODEL_SIZE 4U +#if 0 +#define APP_NVM_MODELDATA_PER_ELEMENT_SIZE (APP_NVM_GENERIC_MODEL_SIZE + \ + APP_NVM_LIGHT_MODEL_SIZE + \ + APP_NVM_LIGHT_LC_MODEL_SIZE) +#endif +#define APP_NVM_MODEL_SIZE (APP_NVM_MODELDATA_PER_ELEMENT_SIZE * APPLICATION_NUMBER_OF_ELEMENTS) + +#define GENERIC_VALID_FLAG 0xAA +#define TESTING_BYTE 240 /* 16 bytes are reserved for generic */ -#define GENERIC_VALID_FLAG_OFFSET 0 -#define GENERIC_ON_OFF_NVM_OFFSET 1 -#define GENERIC_LEVEL_NVM_OFFSET 2 -#define GENERIC_POWER_ON_OFF_NVM_OFFSET 4 +#define GENERIC_VALID_FLAG_OFFSET 0 +#define GENERIC_ON_OFF_NVM_OFFSET 1 +#define GENERIC_LEVEL_NVM_OFFSET 2 +#define GENERIC_POWER_ON_OFF_NVM_OFFSET 4 /* 16 bytes are reserved for light * Light model nvm offset is 16 bytes ahead of generic model */ -#define LIGHT_VALID_FLAG_OFFSET 0 -#define LIGHT_LIGHTNESS_NVM_OFFSET 1 -#define LIGHT_LIGHTNESS_DEFAULT_NVM_OFFSET 3 -#define LIGHT_LIGHTNESS_LAST_NVM_OFFSET 5 -#define LIGHT_CTL_NVM_OFFSET 7 -#define LIGHT_CTL_DEFAULT_NVM_OFFSET 13 -#define LIGHT_HSL_NVM_OFFSET 19 -#define LIGHT_HSL_DEFAULT_NVM_OFFSET 25 +#define LIGHT_VALID_FLAG_OFFSET 0 +#define LIGHT_LIGHTNESS_PRESENT_NVM_OFFSET 1 +#define LIGHT_LIGHTNESS_TARGET_NVM_OFFSET 3 +#define LIGHT_LIGHTNESS_DEFAULT_NVM_OFFSET 5 +#define LIGHT_LIGHTNESS_LAST_NVM_OFFSET 7 +#define LIGHT_TRANSITION_STATUS 9 +#define LIGHT_CTL_NVM_OFFSET 10 +#define LIGHT_CTL_DEFAULT_NVM_OFFSET 16 +#define LIGHT_HSL_NVM_OFFSET 22 +#define LIGHT_HSL_DEFAULT_NVM_OFFSET 28 +#define LIGHT_LC_MODE_NVM_OFFSET 48 /* Light model nvm offset used for local array*/ -#define LIGHT_DEFAULT_OFFSET 6 +#define LIGHT_DEFAULT_OFFSET 6 /* Buffer index limit for the generic data */ -#define GENERIC_DATA_LIMIT 15 +#define GENERIC_DATA_LIMIT 15 + +#define No_NVM_FLAG 0XFE +#define GENERIC_ON_OFF_NVM_FLAG 0X01 +#define GENERIC_LEVEL_NVM_FLAG 0X02 +#define LIGHT_LIGHTNESS_NVM_FLAG 0X03 +#define LIGHT_CTL_NVM_FLAG 0X04 +#define LIGHT_HSL_NVM_FLAG 0X05 +#define LIGHT_LC_NVM_FLAG 0X06 + +#define GENERIC_POWER_OFF_STATE 0X00 +#define GENERIC_POWER_ON_STATE 0X01 +#define GENERIC_POWER_RESTORE_STATE 0X02 + +#define FLAG_SET 1 +#define FLAG_RESET 0 + +#define VALUE_UPDATE_SET 0X01 +#define VALUE_UPDATE_RESET 0X00 + +#define CLK_FLAG_ENABLE 1 +#define CLK_FLAG_DISABLE 0 + +#define PWM_ZERO_VALUE 1 +#define INTENSITY_LEVEL_ZERO 0X00 +#define INTENSITY_LEVEL_FULL 31990U + +#define MAX_TID_VALUE 0XFF + +#define STEP_HEX_VALUE_0 0X00 +#define STEP_HEX_VALUE_1 0X01 +#define STEP_HEX_VALUE_2 0X02 +#define STEP_HEX_VALUE_3 0X03 + +#define STEP_RESOLUTION_100MS 100 +#define STEP_RESOLUTION_1S 1000 +#define STEP_RESOLUTION_10S 10000 +#define STEP_RESOLUTION_10M 600000 + +typedef MOBLE_RESULT (*APPLI_SAVE_MODEL_STATE_CB)(MOBLEUINT8* stateBuff, MOBLEUINT16 size); +typedef MOBLE_RESULT (*APPLI_SAVE_MODEL_TEST_STATE_CB)(MOBLEUINT8* stateBuff, MOBLEUINT16 size); +typedef MOBLE_RESULT (*APPLI_RETRIEVE_MODEL_TEST_STATE_CB)(MOBLEUINT8* stateBuff, MOBLEUINT16 size); + +/******************************************************************************/ +/********** Following Section defines the SIG MODEL IDs ************/ +/******************************************************************************/ +#define GENERIC_ONOFF_SERVER_MODEL_ID 0x1000 +#define GENERIC_ONOFF_CLIENT_MODEL_ID 0x1001 +#define GENERIC_LEVEL_SERVER_MODEL_ID 0x1002 +#define GENERIC_CLIENT_LEVEL_MODEL_ID 0x1003 +#define GENERIC_DEFAULT_TRANSITION_TIME_SERVER_MODEL_ID 0x1004 +#define GENERIC_CLIENT_DEFAULT_TRANSITION_TIME_MODEL_ID 0x1005 +#define GENERIC_SERVER_POWER_ONOFF_MODEL_ID 0x1006 +#define GENERIC_POWER_ONOFF_SETUP_SERVER_MODEL_ID 0x1007 +#define GENERIC_CLIENT_POWER_ONOFF_MODEL_ID 0x1008 +#define GENERIC_SERVER_POWER_LEVEL_MODEL_ID 0x1009 +#define GENERIC_SERVER_POWER_LEVEL_SETUP_MODEL_ID 0x100A +#define GENERIC_CLIENT_POWER_LEVEL_MODEL_ID 0x100B +#define GENERIC_SERVER_BATTERY_MODEL_ID 0x100C +#define GENERIC_CLIENT_BATTERY_MODEL_ID 0x100D +#define GENERIC_SERVER_LOCATION_MODEL_ID 0x100E +#define GENERIC_SERVER_LOCATION_SETUP_MODEL_ID 0x100F +#define GENERIC_CLIENT_LOCATION_MODEL_ID 0x1010 +#define GENERIC_SERVER_ADMIN_PROPERTY_MODEL_ID 0x1011 +#define GENERIC_SERVER_MANUFACTURER_PROPERTY_MODEL_ID 0x1012 +#define GENERIC_SERVER_USER_PROPERTY_MODEL_ID 0x1013 +#define GENERIC_SERVER_CLIENT_PROPERTY_MODEL_ID 0x1014 + +#define SENSOR_SERVER_MODEL_ID 0x1100U +#define SENSOR_SETUP_SERVER_MODEL_ID 0x1101U +#define SENSOR_CLIENT_MODEL_ID 0x1102U + +#define LIGHT_SERVER_LIGHTNESS_MODEL_ID 0x1300 +#define LIGHT_SERVER_LIGHTNESS_SETUP_MODEL_ID 0x1301 +#define LIGHT_CLIENT_LIGHTNESS_MODEL_ID 0x1302 +#define LIGHT_SERVER_CTL_MODEL_ID 0x1303 +#define LIGHT_SERVER_CTL_SETUP_MODEL_ID 0x1304 +#define LIGHT_CLIENT_CTL_MODEL_ID 0x1305 +#define LIGHT_SERVER_CTL_TEMPERATURE_MODEL_ID 0x1306 +#define LIGHT_SERVER_HSL_MODEL_ID 0x1307 +#define LIGHT_SERVER_HSL_SETUP_MODEL_ID 0x1308 +#define LIGHT_CLIENT_HSL_MODEL_ID 0x1309 +#define LIGHT_SERVER_HSL_HUE_MODEL_ID 0x130A +#define LIGHT_SERVER_HSL_SATURATION_MODEL_ID 0x130B +#define LIGHT_SERVER_XYL_MODEL_ID 0x130C +#define LIGHT_SERVER_XYL_SETUP_MODEL_ID 0x130D +#define LIGHT_CLIENT_XYL_MODEL_ID 0x130E +#define LIGHT_LC_SERVER_MODEL_ID 0x130F +#define LIGHT_LC_SETUP_SERVER_MODEL_ID 0x1310 +#define LIGHT_LC_CLIENT_MODEL_ID 0x1311 -#define FLAG_SET 1 -#define FLAG_RESET 0 +/* Sensor Server model opcode */ +#define SENSOR_DESCRIPTOR_GET 0x8230U +#define SENSOR_DESCRIPTOR_STATUS 0X51U +#define SENSOR_GET 0X8231U +#define SENSOR_STATUS 0X52U +#define SENSOR_COLUMN_GET 0X8232U +#define SENSOR_COLUMN_STATUS 0X53U +#define SENSOR_SERIES_GET 0X8233U +#define SENSOR_SERIES_STATUS 0X54U +/* Sensor Setup Server model opcode */ +#define SENSOR_CADENCE_GET 0X8234U +#define SENSOR_CADENCE_SET 0X55U +#define SENSOR_CADENCE_SET_UNACK 0X56U +#define SENSOR_CADENCE_STATUS 0X57U +#define SENSOR_SETTINGS_GET 0X8235U +#define SENSOR_SETTINGS_STATUS 0X58U +#define SENSOR_SETTING_GET 0X8236U +#define SENSOR_SETTING_SET 0X59U +#define SENSOR_SETTING_SET_UNACK 0X5AU +#define SENSOR_SETTING_STATUS 0X5BU +/* Light LC Server model opcode */ +#define LIGHT_LC_MODE_GET 0X8291U +#define LIGHT_LC_MODE_SET 0X8292U +#define LIGHT_LC_MODE_SET_UNACK 0X8293U +#define LIGHT_LC_MODE_STATUS 0X8294U +#define LIGHT_LC_OM_GET 0X8295U +#define LIGHT_LC_OM_SET 0X8296U +#define LIGHT_LC_OM_SET_UNACK 0X8297U +#define LIGHT_LC_OM_STATUS 0X8298U +#define LIGHT_LC_ON_OFF_GET 0X8299U +#define LIGHT_LC_ON_OFF_SET 0X829AU +#define LIGHT_LC_ON_OFF_SET_UNACK 0X829BU +#define LIGHT_LC_ON_OFF_STATUS 0X829CU +/* Light LC Setup server model opcode */ +#define LIGHT_LC_PROPERTY_GET 0X829DU +#define LIGHT_LC_PROPERTY_SET 0X62U +#define LIGHT_LC_PROPERTY_SET_UNACK 0X63U +#define LIGHT_LC_PROPERTY_STATUS 0X64U -#define VALUE_UPDATE_SET 0X01 -#define VALUE_UPDATE_RESET 0X00 -#define CLK_FLAG_ENABLE 1 -#define CLK_FLAG_DISABLE 0 + /* Mesh Device Properties and Property IDs */ +/* Temperature 8 In A Period Of Day */ +#define AVERAGE_AMBIENT_TEMPERATURE_IN_A_PERIOD_OF_DAY_PID 0x0001 +/* Average Current */ +#define AVERAGE_INPUT_CURRENT_PID 0x0002 +/* Average_Voltage */ +#define AVERAGE_INPUT_VOLTAGE_PID 0x0003 +/* Average Current */ +#define AVERAGE_OUTPUT_CURRENT_PID 0x0004 +/* Average_Voltage */ +#define AVERAGE_OUTPUT_VOLTAGE_PID 0x0005 +/* Luminous Intensity */ +#define CENTER_BEAM_INTENSITY_AT_FULL_POWER _PID 0x0006 +/* Chromaticity Tolerance */ +#define CHROMATICITY_TOLERANCE_PID 0x0007 +/* Cie 13.3-1995 Color Rendering Index */ +#define COLOR_RENDERING_INDEX_R9_PID 0x0008 +/* Cie 13.3-1995 Color Rendering Index */ +#define COLOR_RENDERING_INDEX_RA_PID 0x0009 +/* Gap.Appearance */ +#define DEVICE_APPEARANCE_PID 0x000A +/* Country Code */ +#define DEVICE_COUNTRY_OF_ORIGIN_PID 0x000B +/* Date Utc */ +#define DEVICE_DATE_OF_MANUFACTURE_PID 0x000C +/* Energy */ +#define DEVICE_ENERGY_USE_SINCE_TURN_ON_PID 0x000D +/* Fixed_String 8 */ +#define DEVICE_FIRMWARE_REVISION_PID 0x000E +/* Global Trade Item_Number */ +#define DEVICE_GLOBAL_TRADE_ITEM_NUMBER_PID 0x000F +/* Fixed_String 16 */ +#define DEVICE_HARDWARE_REVISION _PID 0x0010 +/* Fixed_String 36 */ +#define DEVICE_MANUFACTURER_NAME_PID 0x0011 +/* Fixed_String 24 */ +#define DEVICE_MODEL_NUMBER_PID 0x0012 +/* Temperature Range */ +#define DEVICE_OPERATING_TEMPERATURE_RANGE_SPECIFICATION_PID 0x0013 +/* Temperature_Statistics */ +#define DEVICE_OPERATING_TEMPERATURE_STATISTICAL_VALUES_PID 0x0014 +/* Event_Statistics */ +#define DEVICE_OVER_TEMPERATURE_EVENT_STATISTICS_PID 0x0015 +/* Power_Specification */ +#define DEVICE_POWER_RANGE_SPECIFICATION_PID 0x0016 +/* Time_Hour 24 */ +#define DEVICE_RUNTIME_SINCE_TURN_ON_PID 0x0017 +/* Time_Hour 24 */ +#define DEVICE_RUNTIME_WARRANTY_PID 0x0018 +/* Fixed_String 16 */ +#define DEVICE_SERIAL_NUMBER_PID 0x0019 +/* Fixed_String 8 */ +#define DEVICE_SOFTWARE_REVISION_PID 0x001A +/* Event_Statistics */ +#define DEVICE_UNDER_TEMPERATURE_EVENT_STATISTICS_PID 0x001B +/* Temperature 8_Statistics */ +#define INDOOR_AMBIENT_TEMPERATURE_STATISTICAL_VALUES_PID 0x001C +/* Chromaticity Coordinates */ +#define INITIAL_CIE 1931_CHROMATICITY_COORDINATES_PID 0x001D +/* Correlated Color Temperature */ +#define INITIAL_CORRELATED_COLOR_TEMPERATURE_PID 0x001E + /* Luminous_Flux */ +#define INITIAL_LUMINOUS_FLUX_PID 0x001F +/* Chromatic Distance_From_Planckian */ +#define INITIAL_PLANCKIAN_DISTANCE_PID 0x0020 +/* Electric Current_Specification */ +#define INPUT_CURRENT_RANGE_SPECIFICATION_PID 0x0021 +/* Electric Current_Statistics */ +#define INPUT_CURRENT_STATISTICS_PID 0x0022 +/* Event_Statistics */ +#define INPUT_OVER_CURRENT_EVENT_STATISTICS_PID 0x0023 +/* Event_Statistics */ +#define INPUT_OVER_RIPPLE_VOLTAGE_EVENT_STATISTICS_PID 0x0024 +/* Event_Statistics */ +#define INPUT_OVER_VOLTAGE_EVENT_STATISTICS_PID 0x0025 +/* Event_Statistics */ +#define INPUT_UNDER_CURRENT_EVENT_STATISTICS_PID 0x0026 +/* Event_Statistics */ +#define INPUT_UNDER_VOLTAGE_EVENT_STATISTICS_PID 0x0027 +/* Voltage_Specification */ +#define INPUT_VOLTAGE_RANGE_SPECIFICATION_PID 0x0028 +/* Percentage 8 */ +#define INPUT_VOLTAGE_RIPPLE_SPECIFICATION_PID 0x0029 +/* Voltage Statistics */ +#define INPUT_VOLTAGE_STATISTICS_PID 0x002A +/* Illuminance */ +#define LIGHT_CONTROL_AMBIENT_LUXLEVEL_ON_PID 0x002B +/* Illuminance */ +#define LIGHT_CONTROL_AMBIENT_LUXLEVEL_PROLONG_PID 0x002C +/* Illuminance */ +#define LIGHT_CONTROL_AMBIENT_LUXLEVEL_STANDBY_PID 0x002D +/* Perceived_Lightness */ +#define LIGHT_CONTROL_LIGHTNESS_ON_PID 0x002E +/* Perceived_Lightness */ +#define LIGHT_CONTROL_LIGHTNESS_PROLONG_PID 0x002F +/* Perceived_Lightness */ +#define LIGHT_CONTROL_LIGHTNESS_STANDBY_PID 0x0030 +/* Percentage 8 */ +#define LIGHT_CONTROL_REGULATOR_ACCURACY_PID 0x0031 +/* Coefficient */ +#define LIGHT_CONTROL_REGULATOR_KID_PID 0x0032 +/* Coefficient */ +#define LIGHT_CONTROL_REGULATOR_KIU_PID 0x0033 +/* Coefficient */ +#define LIGHT_CONTROL_REGULATOR_KPD_PID 0x0034 +/* Coefficient */ +#define LIGHT_CONTROL_REGULATOR_KPU_PID 0x0035 +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_FADE_PID 0x0036 +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_FADE_ON_PID 0x0037 +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_FADE_STANDBY_AUTO_PID 0x0038 +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_FADE_STANDBY_MANUAL_PID 0x0039 +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_OCCUPANCY_DELAY_PID 0x003A +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_PROLONG_PID 0x003B +/* Time Millisecond 24 */ +#define LIGHT_CONTROL_TIME_RUN_ON_PID 0x003C +/* Percentage 8 */ +#define LUMEN_MAINTENANCE_FACTOR_PID 0x003D +/* Luminous_Efficacy */ +#define LUMINOUS_EFFICACY_PID 0x003E +/* Luminous_Energy */ +#define LUMINOUS_ENERGY_SINCE_TURN_ON_PID 0x003F +/* Luminous_Exposure */ +#define LUMINOUS_EXPOSURE_PID 0x0040 +/* Luminous_Flux Range */ +#define LUMINOUS_FLUX_RANGE_PID 0x0041 +/* Percentage 8 */ +#define MOTION_SENSED_PID 0x0042 +/* Percentage 8 */ +#define MOTION_THRESHOLD_PID 0x0043 +/* Event_Statistics */ +#define OPEN_CIRCUIT_EVENT_STATISTICS_PID 0x0044 +/* Temperature 8_Statistics */ +#define OUTDOOR_STATISTICAL_VALUES_PID 0x0045 +/* Electric Current Range */ +#define OUTPUT_CURRENT_RANGE_PID 0x0046 +/* Electric Current_Statistics */ +#define OUTPUT_CURRENT_STATISTICS_PID 0x0047 +/* Percentage 8 */ +#define OUTPUT_RIPPLE_VOLTAGE_SPECIFICATION_PID 0x0048 +/* Voltage_Specification */ +#define OUTPUT_VOLTAGE_RANGE_PID 0x0049 +/* Voltage_Statistics */ +#define OUTPUT_VOLTAGE_STATISTICS_PID 0x004A +/* Event_Statistics */ +#define OVER_OUTPUT_RIPPLE_VOLTAGE_EVENT_STATISTICS_PID 0x004B +/* Count 16 */ +#define PEOPLE_COUNT_PID 0x004C +/* Boolean */ +#define PRESENCE_DETECTED_PID 0x004D +/* Illuminance */ +#define PRESENT_AMBIENT_LIGHT_LEVEL_PID 0x004E +/* Temperature 8 */ +#define PRESENT_AMBIENT_TEMPERATURE_PID 0x004F +/* Chromaticity Coordinates */ +#define PRESENT_CIE 1931_CHROMATICITY_COORDINATES_PID 0x0050 +/* Correlated Color Temperature */ +#define PRESENT_CORRELATED_COLOR_TEMPERATURE_PID 0x0051 +/* Power */ +#define PRESENT_DEVICE_INPUT_POWER_PID 0x0052 +/* Percentage 8 */ +#define PRESENT_DEVICE_OPERATING_EFFICIENCY_PID 0x0053 +/* Temperature */ +#define PRESENT_DEVICE_OPERATING_TEMPERATURE_PID 0x0054 +/* Illuminance */ +#define PRESENT_ILLUMINANCE_PID 0x0055 +/* Temperature 8 */ +#define PRESENT_INDOOR_AMBIENT_TEMPERATURE_PID 0x0056 +/* Electric Current */ +#define PRESENT_INPUT_CURRENT_PID 0x0057 +/* Percentage 8 */ +#define PRESENT_INPUT_RIPPLE_VOLTAGE_PID 0x0058 +/* Voltage */ +#define PRESENT_INPUT_VOLTAGE_PID 0x0059 +/* Luminous_Flux */ +#define PRESENT_LUMINOUS_FLUX_PID 0x005A +/* Temperature 8 */ +#define PRESENT_OUTDOOR_AMBIENT_TEMPERATURE_PID 0x005B +/* Electric Current */ +#define PRESENT_OUTPUT_CURRENT_PID 0x005C +/* Voltage */ +#define PRESENT_OUTPUT_VOLTAGE_PID 0x005D +/* Chromatic Distance_From_Planckian */ +#define PRESENT_PLANCKIAN_DISTANCE_PID 0x005E +/* Percentage 8 */ +#define PRESENT_RELATIVE_OUTPUT_RIPPLE_VOLTAGE_PID 0x005F +/* Energy In_A_Period Of Day */ +#define RELATIVE_DEVICE_ENERGY_USE_IN_A_PERIOD_OF_DAY_PID 0x0060 +/* Relative Runtime In_A_Generic_Level Range */ +#define RELATIVE_DEVICE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE_PID 0x0061 +/* Relative_Value In_An Illuminance Range */ +#define RELATIVE_EXPOSURE_TIME_IN_AN_ILLUMINANCE_RANGE_PID 0x0062 +/* Luminous_Energy */ +#define RELATIVE_RUNTIME_IN_A_CORRELATED_COLOR_TEMPERATURE_RANGE_PID 0x0063 +/* Relative_Value In_A Temperature Range */ +#define RELATIVE_RUNTIME_IN_A_DEVICE_OPERATING_TEMPERATURE_RANGE_PID 0x0064 +/* Relative Runtime In_A Current Range */ +#define RELATIVE_RUNTIME_IN_AN_INPUT_CURRENT_RANGE_PID 0x0065 +/* Relative_Value In_A_Voltage Range */ +#define RELATIVE_RUNTIME_IN_AN_INPUT_VOLTAGE_RANGE_PID 0x0066 +/* Event_Statistics */ +#define SHORT_CIRCUIT_EVENT_STATISTICS_PID 0x0067 +/* Time_Second 16 */ +#define TIME_SINCE_MOTION_SENSED_PID 0x0068 +/* Time Second 16 */ +#define TIME_SINCE_PRESENCE_DETECTED_PID 0x0069 +/* Energy */ +#define TOTAL_DEVICE_ENERGY_USE_PID 0x006A +/* Count 24 */ +#define TOTAL_DEVICE_OFF_ON_CYCLES_PID 0x006B +/* Count 24 */ +#define TOTAL_DEVICE_POWER_ON_CYCLES_PID 0x006C +/* Time_Hour 24 */ +#define TOTAL_DEVICE_POWER_ON_TIME_PID 0x006D +/* Time_Hour 24 */ +#define TOTAL_DEVICE_RUNTIME_PID 0x006E +/* Time_Hour 24 */ +#define TOTAL_LIGHT_EXPOSURE_TIME_PID 0x006F +/* Luminous_Energy */ +#define TOTAL_LUMINOUS_ENERGY_PID 0x0070 +/* Temperature 8 */ +#define DESIRED_AMBIENT_TEMPERATURE_PID 0x0071 -#define PWM_ZERO_VALUE 1 -#define INTENSITY_LEVEL_ZERO 0X00 -#define INTENSITY_LEVEL_FULL 31990U +#define PRESSURE_PID 0x2A6D +#define HUMIDITY_PID 0x2A6F +#define TIME_OF_FLIGHT_PID 0X2A7F +#define MAGNETO_METER_PID 0x2AA1 +#define ACCELERO_METER_PID 0x2BA1 +#define GYROSCOPE_PID 0x2BA2 +#define VOLTAGE_PID 0x0005 +#define CURRENT_PID 0x0004 +#define POWER_FACTOR_PID 0x0072 +#define ACTIVE_POWER_PID 0x0073 +#define REACTIVE_POWER_PID 0x0074 +#define APPARENT_POWER_PID 0x0075 +#define ACTIVE_ENERGY_PID 0x0083 +#define REACTIVE_ENERGY_PID 0x0084 +#define APPARENT_ENERGY_PID 0x0085 + +#define PROPERTY_ID_LENGTH 2 + +#define ONE_BYTE_VALUE 1 +#define TWO_BYTE_VALUE 2 +#define THREE_BYTE_VALUE 3 +#define FOUR_BYTE_VALUE 4 + +#define PROPERTY_ID_PROHIBITED 0x0000 -#define MAX_TID_VALUE 0XFF -typedef MOBLE_RESULT (*APPLI_SAVE_MODEL_STATE_CB)(MOBLEUINT8* stateBuff, MOBLEUINT8 size); /** @addtogroup MODEL_GENERIC * @{ */ @@ -69,17 +454,99 @@ typedef MOBLE_RESULT (*APPLI_SAVE_MODEL_STATE_CB)(MOBLEUINT8* stateBuff, MOBLEUI * @{ */ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -#pragma pack(1) -typedef struct displayFloatToInt_s +/* Exported types ------------------------------------------------------------*/ + + +/** + * transition status enum + */ +typedef enum { - MOBLEINT8 sign; /* 0 means positive, 1 means negative*/ - MOBLEUINT32 out_int; - MOBLEUINT32 out_dec; -} displayFloatToInt_t; -#pragma pack(4) + TRANSITION_STATUS_STOP = 0, + TRANSITION_STATUS_DELAY, + TRANSITION_STATUS_RUNNING +}transition_status_e; + +/** + * transition parameters struct + */ +typedef struct +{ + MOBLEUINT32 stepResolutionMs; + MOBLEUINT32 trTimeMs; + MOBLEUINT32 trBeginTick; + MOBLEUINT32 trEndTick; + MOBLEUINT32 trNextActionTick; + transition_status_e trStatus; + MOBLEUINT8 publishEventTrig; + MOBLEUINT8 res[2]; +} transition_params_t; + + +/** + * status send (in reply to get, set & setunack messages) enum + */ +typedef enum +{ + STATUS_SEND_REPLY = 0, + STATUS_SEND_PUBLISH, + STATUS_SEND_REPLY_PUBLISH +} status_send_e; + + +/** + * transition event enum + */ +typedef enum +{ + TRANSITION_EVENT_NO = 0, + TRANSITION_EVENT_ABORT, + TRANSITION_EVENT_DELAY, + TRANSITION_EVENT_TIMER_START, + TRANSITION_EVENT_TIMER_TRIG, + TRANSITION_EVENT_PUBLISH, + TRANSITION_EVENT_TIMER_STOP +}transition_event_e; + + +/** + * Model tid value structure + */ +typedef struct +{ + MOBLEUINT8 Tid_Value; + MOBLEUINT8 TidSend; + MOBLE_ADDRESS Peer_Addrs; + MOBLE_ADDRESS Dst_Addrs; +}Model_Tid_t; + + +/** + * TID params struct + */ +typedef struct +{ + MOBLEUINT32 tidTick; + MOBLE_ADDRESS src; + MOBLE_ADDRESS dst; + MOBLEUINT8 tid; + MOBLEUINT8 res[3]; +}tid_param_t; + + +/** + * variable used for binding status + */ +typedef struct +{ + MOBLEUINT16 Model_Rx_Opcode; + MOBLEUINT16 Model_ID; + MOBLE_ADDRESS Dst_Peer; +}Model_Binding_Var_t; + + +/* Exported functions ------------------------------------------------------- */ MOBLE_RESULT Chk_OptionalParamValidity(MOBLEUINT8 param_length, MOBLEUINT8 mandatory_length, MOBLEUINT8 param, MOBLEUINT8 max_param_value ); @@ -105,11 +572,14 @@ MOBLE_RESULT Chk_MultiParamValidityAllUnsigned(MOBLEUINT16 min_param_range1, MO MOBLEUINT16 min_param_range2, MOBLEUINT16 max_param_range2, MOBLEINT16 min_param_range3, MOBLEUINT16 max_param_range3, const MOBLEUINT8* param); - MOBLE_RESULT Chk_ParamMinMaxIntValidity(MOBLEINT16 min_param_value, const MOBLEUINT8* param, MOBLEINT16 max_param_value ); - MOBLE_RESULT Chk_TidValidity(MOBLE_ADDRESS peer_Addrs,MOBLE_ADDRESS dst_Addrs,MOBLEUINT8 tidValue); +MOBLEUINT8 Tid_CheckAndUpdate(MOBLEUINT8 currentMsgTid, + MOBLE_ADDRESS currentMsgSrc, + MOBLE_ADDRESS currentMsgDst, + tid_param_t* pLastMsgTidParams); +MOBLE_RESULT TimeDttFGet(MOBLEUINT32 timeMs, MOBLEUINT8* timeDttF); MOBLEUINT32 Get_StepResolutionValue(MOBLEUINT8 time_param); MOBLEUINT16 PwmValueMapping(MOBLEUINT16 setValue , MOBLEUINT16 maxRange , MOBLEINT16 minRange); @@ -117,23 +587,55 @@ MOBLEUINT16 PwmValueMapping(MOBLEUINT16 setValue , MOBLEUINT16 maxRange , MOBLEI float Ratio_CalculateValue(MOBLEUINT16 setValue , MOBLEUINT16 maxRange , MOBLEINT16 minRange); MOBLEUINT16 PWM_CoolValue(float colourValue ,float brightValue); MOBLEUINT16 PWM_WarmValue(float colourValue ,float brightValue); -void floatToInt(float in, displayFloatToInt_t *out_value, MOBLEINT32 dec_prec); void TraceHeader(const char* func_name, int mode); #ifdef ENABLE_SAVE_MODEL_STATE_NVM -MOBLE_RESULT SaveModelsStateNvm(MOBLEUINT8 flag); +MOBLE_RESULT SaveModelsStateNvm(MOBLEUINT8* flag); #endif MOBLEUINT8 BLE_GetElementNumber(void); void Test_Process(void); void ModelSave_Process(void); void BLEMesh_PacketResponseTime(MOBLEUINT8 *testFunctionParm); -MOBLEUINT8 BLE_waitPeriod(MOBLEUINT32 waitPeriod); MOBLEUINT8 Time_Conversion(MOBLEUINT32 lc_Time); - void Model_RestoreStates(MOBLEUINT8 const *pModelState_Load, MOBLEUINT8 size); -MOBLEUINT16 Light_lightnessPowerOnValue(MOBLEUINT8 const *pModelValue_Load); -void Light_CtlPowerOnValue(MOBLEUINT8 const *pModelValue_Load); -void Light_HslPowerOnValue(MOBLEUINT8 const *pModelValue_Load); - +MOBLEUINT16 Light_lightnessPowerOnValue(MOBLEUINT8 const *pModelValue_Load, + MODEL_MessageHeader_t *pmsgParam); +void Light_CtlPowerOnValue(MOBLEUINT8 const *pModelValue_Load, MODEL_MessageHeader_t *pmsgParam); +void Light_HslPowerOnValue(MOBLEUINT8 const *pModelValue_Load, MODEL_MessageHeader_t *pmsgParam); void MemoryDumpHex(const MOBLEUINT8* memory_addr, int size); +void PutLittleEndian(MOBLEUINT8* stream, MOBLEUINT32 value, MOBLEUINT8 octets); +void GetLittleEndian(MOBLEUINT8 const *stream, MOBLEUINT8 octets, MOBLEUINT32* result); + +void CopyU8LittleEndienArray_fromU16word (MOBLEUINT8* pArray, MOBLEUINT16 inputWord); +void CopyU8LittleEndienArray_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord); +void CopyU8LittleEndienArray_2B_fromU32word (MOBLEUINT8* pArray, MOBLEUINT32 inputWord); +MOBLEUINT16 CopyU8LittleEndienArrayToU16word (MOBLEUINT8* pArray); +MOBLEUINT32 CopyU8LittleEndienArrayToU32word (MOBLEUINT8* pArray); +void NvmStatePowerFlag_Set(MOBLEUINT8 nvmModelFlag, MOBLEUINT8 elementIndex); +#if 0 +void Device_FlashTesting(void); #endif +transition_event_e Transition_Stop(transition_status_e* status); +transition_event_e Transition_Sm(transition_params_t* transitionParams, + MOBLEUINT32 delayMs); +MOBLEUINT32 Transition_RemainingTimeGet(transition_params_t* transitionParams); +MOBLEUINT32 Transition_TimerGet(transition_params_t* pTrParams); +MOBLEUINT32 Transition_TimeToNextActionGet(transition_params_t* pTrParams); +MOBLEUINT32 Transition_StateValueGet(MOBLEUINT32 finalState, + MOBLEUINT32 initialState, + MOBLEUINT32 timer, + MOBLEUINT32 transitionTime); +MOBLE_RESULT ExtractPropertyId(const MOBLEUINT8* data, + MOBLEUINT16* pPropertyId); +MOBLE_RESULT Binding_GenericOnOff_LightLcLightOnOff(MOBLEUINT8 genericElementIndex, + MOBLEUINT8 genericOnOff, + MOBLEUINT8 optionalParams, + MOBLEUINT32 delayMs, + MOBLEUINT8 transitionParam); +MOBLE_RESULT Binding_LightLcLightOnOff_GenericOnOff(MOBLEUINT8 lcElementIndex, MOBLEUINT8 lcOnOff); +MOBLE_RESULT Binding_LcLinearOut_LightLightnessLinear(MOBLEUINT8 lcElementIndex, MOBLEUINT16 lcLinearOut); +void BindingDisable_LcLinearOut_LightLightnessLinear(MOBLEUINT8 lightnessLinearElementIndex); +#endif /* __COMMON_H */ + +/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/ + |