diff options
Diffstat (limited to 'inc/bluetooth/profile/server/rcu_ota_service.h')
-rw-r--r-- | inc/bluetooth/profile/server/rcu_ota_service.h | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/inc/bluetooth/profile/server/rcu_ota_service.h b/inc/bluetooth/profile/server/rcu_ota_service.h new file mode 100644 index 0000000..1f970c7 --- /dev/null +++ b/inc/bluetooth/profile/server/rcu_ota_service.h @@ -0,0 +1,153 @@ +/** +********************************************************************************************************* +* Copyright(c) 2015, Realtek Semiconductor Corporation. All rights reserved. +********************************************************************************************************** +* @file ota_service.h +* @brief +* @details +* @author hunter_shuai +* @date 14-July-2015 +* @version v1.0.0 +****************************************************************************** +* @attention +* <h2><center>© COPYRIGHT 2015 Realtek Semiconductor Corporation</center></h2> +****************************************************************************** +*/ + +#ifndef _OTA_SERVICE_H_ +#define _OTA_SERVICE_H_ + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include "profile_server.h" +/** @brief Demo Profile service related UUIDs. */ + +#define GATT_UUID_CHAR_OTA 0xFFD1 //1 +#define GATT_UUID_CHAR_MAC 0xFFD2 //2 +#define GATT_UUID_CHAR_PATCH 0xFFD3 //3 +#define GATT_UUID_CHAR_APP_VERSION 0xFFD4 //4 +#define GATT_UUID_CHAR_PATCH_EXTENSION 0xFFD5 //5 +#define GATT_UUID_CHAR_TEST_MODE 0xFFD8 //6 + +#define GATT_UUID_CHAR_DEVICE_INFO 0xFFF1 //7 +#define GATT_UUID_CHAR_IMAGE_COUNT_TO_UPDATE 0xFFF2 //8 +#define GATT_UUID_CHAR_IMAGE_VERSION 0xFFE0 + + +//vendor featture for some customers + +#define EFLASH_SAVE_OTA_PROCESSING_OFFSET 0x208 + + + + +/** @brief Index of each characteristic in Demo Profile service database. */ +#define BLE_SERVICE_CHAR_OTA_INDEX 0x02 +#define BLE_SERVICE_CHAR_MAC_ADDRESS_INDEX 0x04 +#define BLE_SERVICE_CHAR_PATCH_INDEX 0x06 +#define BLE_SERVICE_CHAR_APP_VERSION_INDEX 0x08 +#define BLE_SERVICE_CHAR_PATCH_EXTENSION_INDEX 0x0a +#define BLE_SERVICE_CHAR_TEST_MODE_INDEX 0x0c +#define BLE_SERVICE_CHAR_DEVICE_INFO_INDEX 0x0e +#define BLE_SERVICE_CHAR_IMAGE_COUNT_INDEX 0x10 +#define BLE_SERVICE_CHAR_IMAGE_VERSION_INDEX 0x12 + +/** @brief OTA Write callback data type definition.*/ +#define OTA_WRITE_CHAR_VAL 0x01 +#define OTA_WRITE_TEST_MODE_CHAR_VAL 0x02 + +/** @brief OTA Write callback data type definition.*/ +#define OTA_WRITE_CHAR_VAL 0x01 +#define OTA_VALUE_ENTER 0x01 + +#define OTA_WRITE_IMAGE_COUNT_VAL 0x02 +#define OTA_VALUE_IMAGE_COUNT_APP_ONLY 0x01 +#define OTA_VALUE_IMAGE_COUNT_PATCH_ONLY 0x02 +#define OTA_VALUE_IMAGE_COUNT_APP_AND_PATCH 0x03 + +typedef struct _TOTA_UPDATE_IMAGE_INFO +{ + uint8_t image_count; + uint16_t update_patch_version; + uint16_t update_app_version; +} TOTA_UPDATE_IMAGE_INFO; + +typedef struct _T_DFU_DEVICE_INFO +{ + uint8_t ictype; + uint8_t ota_version; + uint8_t secure_version; + + union + { + uint8_t value; + struct + { + uint8_t buffercheck: 1; // 1:support, 0:don't support + uint8_t aesflg: 1; // 1:aes encrypt when ota, 0:not encrypt + uint8_t aesmode: 1; // 1:all data is encrypted, 0:only encrypt 16byte + //uint8_t verify_algo: 1; // 1:sha256, 0:crc + uint8_t copy_img: 1; //1:support ,0:don't support + uint8_t multi_img: 1; //1:support(update multi img at a time) ,0:don't support(one img at a time) + uint8_t rsvd: 3; + }; + } mode; + + uint16_t maxbuffersize; + uint16_t res; + + uint32_t img_indicator; +} T_DFU_DEVICE_INFO, * P_DFU_DEVICE_INFO; + + +#define OTA_UPDATE_IMAGE_INFO_LEN 5 + +#define CHAR2SHORT(p) (((*(p)) & 0xff) + ((*((p)+1)) << 8)) + +typedef struct _TOTA_WRITE_MSG +{ + uint8_t opcode; + union + { + uint8_t value; + TOTA_UPDATE_IMAGE_INFO update_image_info; + } u; +} TOTA_WRITE_MSG; + +typedef union _TOTA_UPSTREAM_MSG_DATA +{ + uint8_t notification_indification_index; + uint8_t read_value_index; + TOTA_WRITE_MSG write; +} TOTA_UPSTREAM_MSG_DATA; + +/** + * @brief OTA servic data struct for notification data to application. + * + * OTA service data to inform application. +*/ +typedef struct _TOTA_CALLBACK_DATA +{ + T_SERVICE_CALLBACK_TYPE msg_type; /**< @brief EventId defined upper */ + TOTA_UPSTREAM_MSG_DATA msg_data; +} TOTA_CALLBACK_DATA; + + +extern uint8_t ota_add_service(void *p_func); + +typedef enum _BANK_NUM +{ + BANK0 = 0, + BANK1 = 1, + BANK_UNKNOWN = 2 +} BANK_NUM; + + +#ifdef __cplusplus +} +#endif + +#endif |