1 /* Bluetooth: Mesh Generic OnOff, Generic Level, Lighting & Vendor Models 2 * 3 * Copyright (c) 2018 Vikrant More 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8 #ifndef _DEVICE_COMPOSITION_H 9 #define _DEVICE_COMPOSITION_H 10 11 #define CID_RUNTIME 0x05C3 12 13 #define STATE_OFF 0x00 14 #define STATE_ON 0x01 15 #define STATE_DEFAULT 0x01 16 #define STATE_RESTORE 0x02 17 18 /* Following 4 values are as per Mesh Model specification */ 19 #define LIGHTNESS_MIN 0x0001 20 #define LIGHTNESS_MAX 0xFFFF 21 #define TEMP_MIN 0x0320 22 #define TEMP_MAX 0x4E20 23 24 /* Refer 7.2 of Mesh Model Specification */ 25 #define RANGE_SUCCESSFULLY_UPDATED 0x00 26 #define CANNOT_SET_RANGE_MIN 0x01 27 #define CANNOT_SET_RANGE_MAX 0x02 28 29 enum lightness { 30 ONPOWERUP = 0x01, 31 ONOFF, 32 LEVEL, 33 DELTA_LEVEL, 34 ACTUAL, 35 LINEAR, 36 CTL, 37 IGNORE 38 }; 39 40 enum temperature { 41 ONOFF_TEMP = 0x01, 42 LEVEL_TEMP, 43 CTL_TEMP, 44 IGNORE_TEMP 45 }; 46 47 struct generic_onoff_state { 48 u8_t onoff; 49 u8_t target_onoff; 50 51 u8_t last_tid; 52 u16_t last_tx_addr; 53 s64_t last_msg_timestamp; 54 55 u8_t tt; 56 u32_t cal_tt; 57 u8_t delay; 58 u32_t tt_counter; 59 60 u8_t is_optional_para_available; 61 }; 62 63 struct generic_level_state { 64 s16_t level; 65 s16_t target_level; 66 67 s16_t last_level; 68 s32_t last_delta; 69 70 u8_t last_tid; 71 u16_t last_tx_addr; 72 s64_t last_msg_timestamp; 73 74 s32_t tt_delta; 75 u8_t tt; 76 u32_t cal_tt; 77 u8_t delay; 78 u32_t tt_counter; 79 u32_t tt_counter_delta; 80 u32_t tt_counter_move; 81 82 u8_t is_optional_para_available; 83 }; 84 85 struct generic_onpowerup_state { 86 u8_t onpowerup; 87 u8_t last_tid; 88 u16_t last_tx_addr; 89 }; 90 91 struct gen_def_trans_time_state { 92 u8_t tt; 93 }; 94 95 struct vendor_state { 96 int current; 97 u32_t response; 98 u8_t last_tid; 99 u16_t last_tx_addr; 100 s64_t last_msg_timestamp; 101 }; 102 103 struct light_lightness_state { 104 u16_t linear; 105 u16_t target_linear; 106 107 u16_t actual; 108 u16_t target_actual; 109 110 u16_t last; 111 u16_t def; 112 113 u8_t status_code; 114 u16_t light_range_min; 115 u16_t light_range_max; 116 117 u8_t last_tid; 118 u16_t last_tx_addr; 119 s64_t last_msg_timestamp; 120 121 s32_t tt_delta_actual; 122 s32_t tt_delta_linear; 123 u8_t tt; 124 u32_t cal_tt; 125 u8_t delay; 126 u32_t tt_counter_actual; 127 u32_t tt_counter_linear; 128 129 u8_t is_optional_para_available; 130 }; 131 132 struct light_ctl_state { 133 u16_t lightness; 134 u16_t target_lightness; 135 136 u16_t temp; 137 u16_t target_temp; 138 139 s16_t delta_uv; 140 s16_t target_delta_uv; 141 142 u8_t status_code; 143 u16_t temp_range_min; 144 u16_t temp_range_max; 145 146 u16_t lightness_def; 147 u16_t temp_def; 148 s16_t delta_uv_def; 149 150 u16_t temp_last; 151 152 u8_t last_tid; 153 u16_t last_tx_addr; 154 s64_t last_msg_timestamp; 155 156 s32_t tt_lightness_delta; 157 s32_t tt_temp_delta; 158 s32_t tt_duv_delta; 159 u8_t tt; 160 u32_t cal_tt; 161 u8_t delay; 162 u32_t tt_counter; 163 u32_t tt_counter_temp; 164 165 u8_t is_optional_para_available; 166 }; 167 168 extern struct generic_onoff_state gen_onoff_srv_root_user_data; 169 extern struct generic_level_state gen_level_srv_root_user_data; 170 extern struct gen_def_trans_time_state gen_def_trans_time_srv_user_data; 171 extern struct generic_onpowerup_state gen_power_onoff_srv_user_data; 172 extern struct light_lightness_state light_lightness_srv_user_data; 173 extern struct light_ctl_state light_ctl_srv_user_data; 174 extern struct generic_level_state gen_level_srv_s0_user_data; 175 176 extern struct bt_mesh_model root_models[]; 177 extern struct bt_mesh_model vnd_models[]; 178 extern struct bt_mesh_model s0_models[]; 179 180 extern const struct bt_mesh_comp comp; 181 182 #endif 183