1 /* 2 * Copyright (C) 2019-2020 Alibaba Group Holding Limited 3 */ 4 5 #ifndef _VENDOR_MODEL_H 6 #define _VENDOR_MODEL_H 7 8 #define CONFIG_CID_TAOBAO 0x01A8 9 #define CONFIG_MESH_VENDOR_COMPANY_ID CONFIG_CID_TAOBAO 10 11 #define BT_MESH_MODEL_VND_COMPANY_ID 0x01A8 12 #define BT_MESH_MODEL_VND_MODEL_SRV 0x0000 13 #define BT_MESH_MODEL_VND_MODEL_CLI 0x0001 14 15 16 #define VENDOR_OP_ATTR_GET_STATUS 0xD0 17 #define VENDOR_OP_ATTR_SET_ACK 0xD1 18 #define VENDOR_OP_ATTR_SET_UNACK 0xD2 19 #define VENDOR_OP_ATTR_STATUS 0xD3 20 #define VENDOR_OP_ATTR_TRANS_MSG 0xCF 21 #define VENDOR_OP_ATTR_TRANS_INDICATE 0xCE 22 #define VENDOR_OP_ATTR_TRANS_ACK 0xCD 23 #define VENDOR_OP_ATTR_MESH_AUTOCONFIG 0xD6 24 #define VENDOR_OP_ATTR_MESH_AUTOCONFIG_GET 0xD7 25 #define VENDOR_OP_ATTR_MESH_AUTOCONFIG_STATUS 0xD8 26 27 #define VENDOR_OP_ATTR_INDICATE 0xD4 28 #define VENDOR_OP_ATTR_CONFIRM 0xD5 29 #define VENDOR_OP_ATTR_INDICATE_TG 0xDE 30 #define VENDOR_OP_ATTR_CONFIRM_TG 0xDF 31 32 33 #define ONOFF_T 0x0100 34 #define LIGHTNESS_LEVEL_T 0x0121 35 36 #define VENDOR_MODEL_MSG_DFT_RETRY_TIMES 5 37 #define VENDOR_MODEL_MSG_MAX_RETRY_TIMES 10 38 #define VENDOR_MODEL_MSG_RETRY_PERIOD 500 39 40 /** 41 * p_elem: pointer to the element which the messsage want to be sent to 42 * retry: retry counts before desired confirm message received 43 * * fill negative value if retransmission is not necessary 44 * * fill positive value if retransmission is needed 45 * * * will be round in this scope - [VENDOR_MODEL_MSG_DFT_RETRY_TIMES, VENDOR_MODEL_MSG_MAX_RETRY_TIMES] 46 * retry_period: wait for retry_period before retransmit the message, in unit of ms 47 * opid: hightest byte in Opcode defined in the vendor model spec designed by Alibaba IoT Group 48 * * e.g. for Vendor Message Attr Get message, Opcode is 0xD001A8, corresponding opid is 0xD0 49 * * refer to the marco named VENDOR_OP_ATTR_xxxx 50 * tid: 51 * * if the message is with type of VENDOR_OP_ATTR_CONFIRM or VENDOR_OP_ATTR_CONFIRM_TG, 52 * * tid should be filled with the replied message's tid 53 * len: payload length 54 * data: pointer to the vendor message's payload 55 * */ 56 typedef struct _vnd_model_msg { 57 struct bt_mesh_model *model; 58 uint16_t netkey_idx; 59 uint16_t appkey_idx; 60 uint16_t dst_addr; 61 uint16_t len; 62 uint8_t retry; 63 uint8_t retry_period; 64 uint8_t opid; 65 uint8_t tid; 66 uint8_t *data; 67 } vnd_model_msg; 68 69 typedef struct _vnd_model_msg_n { 70 sys_dnode_t node; 71 s8_t left_retry; 72 long long timeout; 73 vnd_model_msg msg; 74 } vnd_model_msg_n; 75 76 77 #endif //_VENDOR_MODEL_H 78