123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- #ifndef _ATT_H_
- #define _ATT_H_
- #include "yc11xx.h"
- #include "ipc.h"
- #include "type.h"
- #include "ycdef.h"
- #include "stddef.h"
- #include <string.h>
- //#define att_list_struct
- #define ATT_LIST_LEN mem_rc_att_list_end-mem_rc_att_list
- typedef struct
- {
- uint8_t Len;
- uint8_t uuid[16];
- }UUID_TYPE;
- typedef struct
- {
- uint16_t handle;
- UUID_TYPE uuids;
- uint16_t dataLen;
- uint16_t dataPtr;
- }FOUND_UUID_TYPE;
- typedef struct
- {
- uint16_t startHandle;
- uint16_t endHandle;
- UUID_TYPE uuids;
- }ATTRIBUTE_GROUP_TYPE;
- typedef struct
- {
- uint8_t Len;
- uint8_t uuid[2];
- }UUID32_TYPE;
- typedef struct
- {
- uint8_t Len;
- uint8_t uuid[16];
- }UUID128_TYPE;
- typedef struct
- {
- uint16_t handle;
- uint8_t uuid_len;
- uint8_t *uuid;
- uint8_t dataLen;
- uint8_t *dataPtr;
- }ATT_TABLE_TYPE;
- #define ATT_LIST_DATA_LENGTH_BYTE 2
- #define CLIENT_CHARACTERTIC_CONFIGURATION 0X2902
- #define EXTERNAL_REPORT_REFERENCE 0X2907
- #define REPORT_REFERENCE 0X2908
- #define UUID_SERVICE_GENERIC_ACC 0x1800
- #define UUID_SERVICE_GENERIC_ATT 0x1801
- #define UUID_SERVICE_DEVICE_INFO 0x180a
- #define UUID_SERVICE_BATTERY 0x180f
- #define UUID_SERVICE_HIDS 0x1812
- #define UUID_GATT_PRIMARY_SERVICE 0x2800
- #define UUID_GATT_SECONDARY_SERVICE 0x2801
- #define UUID_GATT_INCLUDE 0X2802
- #define UUID_GATT_CHARACTERISTIC 0X2803
- #define UUID_CHRCTR_DEVICE_NAME 0X2A00
- #define UUID_CHRCTR_APPEARANCE 0X2A01
- #define UUID_CHRCTR_PerPreConn_Parameters 0x2A04
- #define UUID_CHRCTR_SERVICE_CHANGED 0X2A05
- #define UUID_CHRCTR_BATTERY_LEVEL 0X2A19
- #define UUID_CHRCTR_KEYBOARD_INPUT 0X2A22
- #define UUID_CHRCTR_SYSTEM_ID 0X2A23
- #define UUID_CHRCTR_MODEL_NUMBER 0X2A24
- #define UUID_CHRCTR_SERIAL_NUMBER 0X2A25
- #define UUID_CHRCTR_FIRMWARE 0X2A26
- #define UUID_CHRCTR_MANUFACTURE_NAME 0X2A29
- #define UUID_CHRCTR_KEYBOARD_OUTPUT 0X2A32
- #define UUID_CHRCTR_MOUSE_INPUT 0X2A33
- #define UUID_CHRCTR_HID_INFO 0X2A4A
- #define UUID_CHRCTR_REPORT_MAP 0X2A4B
- #define UUID_CHRCTR_HID_CTRL_POINT 0X2A4C
- #define UUID_CHRCTR_REPORT 0X2A4D
- #define UUID_CHRCTR_PROTOCOL_MODE 0X2A4E
- #define UUID_CHRCTR_PNP_ID 0X2A50
- #define READ_PREMITTED 0x02
- #define WRITE_WITHOUT_RESPONSE_PREMITTED 0x04
- #define WRITE_PREMITTED 0x08
- #define NOTIFY_PREMITTED 0x10
- #define INDICATE_PREMITTED 0X20
- #define UUID2ARRAY(uuid) uuid&0xff, uuid>>8
- // const uint8_t READ_PREMITTED_ONLY[] = {READ_PREMITTED};
- // const uint8_t NOTIFY_PREMITTED_ONLY[] = {NOTIFY_PREMITTED};
- // const uint8_t INDICATE_PREMITTED_ONLY[] = {INDICATE_PREMITTED};
- // const uint8_t WRITE_PREMITTED_ONLY[] = {WRITE_PREMITTED};
- // const uint8_t WRITE_WITHOUT_RESPONSE_PREMITTED_ONLY[] = {WRITE_WITHOUT_RESPONSE_PREMITTED};
- // const uint8_t READ_NOTIFY_PREMITTED[] = {WRITE_WITHOUT_RESPONSE_PREMITTED|NOTIFY_PREMITTED};
- // const uint8_t READ_WRITE_WRITEWITHOUTRSP_PREMITTED[] = {WRITE_WITHOUT_RESPONSE_PREMITTED|READ_PREMITTED|WRITE_PREMITTED};
- // const uint8_t READ_WRITE_PREMITTED[] = {READ_PREMITTED|WRITE_PREMITTED};
- // const uint8_t READ_WRITEWITHOUTRSP_PREMITTED[] = {READ_PREMITTED|WRITE_WITHOUT_RESPONSE_PREMITTED};
- // const uint8_t PRIMARY_SERVICE[] = {UUID2ARRAY(UUID_GATT_PRIMARY_SERVICE)};
- // const uint8_t SECONDARY_SERVICE[] = {UUID2ARRAY(UUID_GATT_SECONDARY_SERVICE)};
- // const uint8_t SERVICE_GENERIC_ACC[] = {UUID2ARRAY(UUID_SERVICE_GENERIC_ACC)};
- // const uint8_t GATT_CHARACTERISTIC[] = {UUID2ARRAY(UUID_GATT_CHARACTERISTIC)};
- // const uint8_t CHRCTR_DEVICE_NAME[] = {UUID2ARRAY(UUID_CHRCTR_DEVICE_NAME)};
- // const uint8_t CHRCTR_APPEARANCE[] = {UUID2ARRAY(UUID_CHRCTR_APPEARANCE)};
- // const uint8_t appearance_value[] = {0x80,0x01};
- // const uint8_t SERVICE_GENERIC_ATT[] = {UUID2ARRAY(UUID_SERVICE_GENERIC_ATT)};
- // const uint8_t CHCTR_PerPreferred_Connection_Parameters[] = {UUID2ARRAY(UUID_CHRCTR_PerPreConn_Parameters)};
- // const uint8_t CHRCTR_SERVICE_CHANGED[] = {UUID2ARRAY(UUID_CHRCTR_SERVICE_CHANGED)};
- // const uint8_t service_changed_value[] = {0,0};
- // const uint8_t CHARACTERTIC_CONFIGURATION[] = {UUID2ARRAY(CLIENT_CHARACTERTIC_CONFIGURATION)};
- // const uint8_t service_changed_conf_value[] = {0,0};
- // const uint8_t SERVICE_BATTERY[] = {UUID2ARRAY(UUID_SERVICE_BATTERY)};
- // const uint8_t CHRCTR_BATTERY_LEVEL[] = {UUID2ARRAY(UUID_CHRCTR_BATTERY_LEVEL)};
- // const uint8_t battery_leval_conf_value[] = {0,0};
- // const uint8_t SERVICE_DEVICE_INFO[] = {UUID2ARRAY(UUID_SERVICE_DEVICE_INFO)};
- // const uint8_t CHRCTR_MODEL_NUMBER[] = {UUID2ARRAY(UUID_CHRCTR_MODEL_NUMBER)};
- // const uint8_t model_number_value[] = {'1','1','1'};
- // const uint8_t CHRCTR_MANUFACTURE_NAME[] = {UUID2ARRAY(UUID_CHRCTR_MANUFACTURE_NAME)};
- // const uint8_t manufacture_name_value[] = {'n','a','n','o'};
- // const uint8_t CHRCTR_PNP_ID[] = {UUID2ARRAY(UUID_CHRCTR_PNP_ID)};
- // const uint8_t pnp_id_value[]={0x02,0x54,0x2b,0x00,0x16,0x00,0x00};
- // const uint8_t SERVICE_HIDS[] = {UUID2ARRAY(UUID_SERVICE_HIDS)};
- // const uint8_t CHRCTR_HID_INFO[] = {UUID2ARRAY(UUID_CHRCTR_HID_INFO)};
- // const uint8_t hid_info[] = {0x01,0x01,0x00,0x02};
- // const uint8_t CHRCTR_REPORT_MAP[] = {UUID2ARRAY(UUID_CHRCTR_REPORT_MAP)};
- // const uint8_t EXTERNAL_REPORT[] = {UUID2ARRAY(EXTERNAL_REPORT_REFERENCE)};
- // const uint8_t external_report_value[] ={0x19,0x2a};
- // const uint8_t CHRCTR_HID_CTRL_POINT[] = {UUID2ARRAY(UUID_CHRCTR_HID_CTRL_POINT)};
- // const uint8_t hid_ctrl_point_value[] = {0,0};
- // const uint8_t CHRCTR_KEYBOARD_INPUT[] = {UUID2ARRAY(UUID_CHRCTR_KEYBOARD_INPUT)};
- // const uint8_t keyboard_input_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t keyboard_input_conf_value[] = {0,0};
- // const uint8_t CHRCTR_KEYBOARD_OUTPUT[] = {UUID2ARRAY(UUID_CHRCTR_KEYBOARD_OUTPUT)};
- // const uint8_t keyboard_output_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t CHRCTR_MOUSE_INPUT[] = {UUID2ARRAY(UUID_CHRCTR_MOUSE_INPUT)};
- // const uint8_t mouse_input_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t mouse_input_conf_value[] = {0,0};
- // const uint8_t CHRCTR_REPORT[] = {UUID2ARRAY(UUID_CHRCTR_REPORT)};
- // const uint8_t report1_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t report1_conf_value[] = {0,0};
- // const uint8_t GATT_REPORT_REFERENCE[] = {UUID2ARRAY(REPORT_REFERENCE)};
- // const uint8_t reportid1_input_value[] = {1,1};
- // const uint8_t report8_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t report8_conf_value[] = {0,0};
- // const uint8_t reportid8_input_value[] = {8,1};
- // const uint8_t report3_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t report3_conf_value[] = {0,0};
- // const uint8_t reportid3_input_value[] = {3,1};
- // const uint8_t reportb_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t reportb_conf_value[] = {0,0};
- // const uint8_t reportidb_input_value[] = {0x0b,1};
- // const uint8_t report_output_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t reportid_ouput_value[] = {0,2};
- // const uint8_t report_feature_value[] = {0,0,0,0,0,0,0,0};
- // const uint8_t reportid_feature_value[] = {0,3};
- // const uint8_t CHRCTR_PROTOCOL_MODE[] = {UUID2ARRAY(UUID_CHRCTR_PROTOCOL_MODE)};
- // const uint8_t YICHIP_SERVICE[] = {0x49,0x53,0x53,0x43,0xfe,0x7d,0x4a,0xe5,0x8f,0xa9,0x9f,0xaf,0xd2,0x05,0xe4,0x55};
- // const uint8_t yichip_ota_notify_value[20] = {0};
- // const uint8_t yichip_ota_write_value[20] = {0};
- // const uint8_t yichip_ota_notify_conf_value[] = {0,0};
- /**
- const uint8_t report_map_value[] =
- { 0x05 ,0x01 //Usage Page Generic Desktop)
- ,0x09 ,0x06 //Usage (Keyboard)
- ,0xA1 ,0x01 //Collection (Application)
- ,0x85 ,0x0b //report ID (HIDAPP_KEYBOARD_REPORT_ID)
- ,0x75 ,0x01 //Report Size (1)
- ,0x95 ,0x08 //Report Count (8)
- ,0x05 ,0x07 //Usage Page (Key Codes)
- ,0x19 ,0xe0 //Usage Minimum (224)
- ,0x29 ,0xe7 //Usage Maximum (231)
- ,0x15 ,0x00 //Logical Minimum (0)
- ,0x25 ,0x01 //Logical Maximum (1)
- ,0x81 ,0x02 //Input (Data, Variable, Absolute)
- ,0x95 ,0x01 //Report Count (1)
- ,0x75 ,0x08 //Report Size (8)
- ,0x81 ,0x01 //Input (Constant) reserved byte(1)
- ,0x95 ,0x05 //Report Count (5)
- ,0x75 ,0x01 //Report Size (1)
- ,0x05 ,0x08 //Usage Page (Page//for LEDs)
- ,0x19 ,0x01 //Usage Minimum (1)
- ,0x29 ,0x05 //Usage Maximum (5)
- ,0x91 ,0x02 //Output (Data, Variable, Absolute), Led report
- ,0x95 ,0x01 //Report Count (1)
- ,0x75 ,0x03 //Report Size (3)
- ,0x91 ,0x01 //Output (Constant), Led report padding
- ,0x95 ,0x06 //Report Count (6)
- ,0x75 ,0x08 //Report Size (8)
- ,0x15 ,0x00 //Logical Minimum (0)
- ,0x25 ,0xeb //Logical Maximum (101)
- ,0x05 ,0x07 //Usage Page (Key codes)
- ,0x19 ,0x00 //Usage Minimum (0)
- ,0x29 ,0xeb //Usage Maximum (101)
- ,0x81 ,0x00 //Input (Data, Array) Key array(6 bytes)
- ,0xC0 //End Collection (Application)
- //Consumer Usepage
- ,0x05 ,0x0c //Usage Page (Consumer Devices)
- ,0x09 ,0x01 //Usage (Consumer Control)
- ,0xa1 ,0x01 //Collection (Application)
- ,0x85 ,0x01 //HIDAPP_REMOTE_REPORT_ID, //report ID (01)
- ,0x19 ,0x00 //USAGE_MINIMUM (0)
- ,0x2a ,0x9c ,0x02 //USAGE_MINIMUM (29c)
- ,0x15 ,0x00 //Logical Minimum (0)
- ,0x26 ,0x9c ,0x02 //Logical Maximum (29c)
- ,0x95 ,0x01 //Report Count (1)
- ,0x75 ,0x10 //Report Size (16)
- ,0x81 ,0x00 //Input (Data, array, Absolute)
- ,0x09 ,0x02 //Usage (Numeric Key Pad )
- ,0xa1 ,0x02 //Collection (Application)
- ,0x05 ,0x09 //Usage Page (button)
- ,0x19 ,0x01 //Usage Minimum (1)
- ,0x29 ,0x0a //Usage Maximum (10)
- ,0x15 ,0x01 //Logical Minimum (1)
- ,0x25 ,0x0a //Logical Maximum (10)
- ,0x95 ,0x01 //Report Count (1)
- ,0x75 ,0x08 //Report Size (8)
- ,0x81 ,0x40 //Input (Data, Variable, Relative)
- ,0xc0 //End Collection
- ,0xc0 //End Collection
- //optional mouse data
- ,0x05 ,0x01 //Usage Page (Generic Desktop)
- ,0x09 ,0x02 //USAGE (Mouse)
- ,0xa1 ,0x01 //COLLECTION (Application)
- ,0x09 ,0x01 //USAGE (Pointer)
- ,0xa1 ,0x00 //COLLECTION (Physical)
- ,0x85 ,0x03 //HIDAPP_MOUSE_REPORT_ID, //report ID (HIDAPP_MOUSE_REPORT_ID)
- ,0x05 ,0x01 //USAGE_PAGE (Generic Desktop)
- ,0x09 ,0x30 //USAGE (X)
- ,0x09 ,0x31 //USAGE (Y)
- ,0x15 ,0x80 //LOGICAL_MINIMUM (-127)
- ,0x25 ,0x7f //LOGICAL_MAXIMUM (127)
- ,0x75 ,0x08 //REPORT_SIZE (8)
- ,0x95 ,0x02 //REPORT_COUNT (2)
- ,0x81 ,0x06 //INPUT (Data, Variable, Relative)
- ,0x05 ,0x09 //USAGE_PAGE (Button)
- ,0x19 ,0x01 //USAGE_MINIMUM (Button 1)
- ,0x29 ,0x05 //USAGE_MAXIMUM (Button 5)
- ,0x15 ,0x00 //LOGICAL_MINIMUM (0)
- ,0x25 ,0x01 //LOGICAL_MAXIMUM (1)
- ,0x95 ,0x05 //REPORT_COUNT (5)
- ,0x75 ,0x01 //REPORT_SIZE (1)
- ,0x81 ,0x02 //INPUT ()
- ,0x95 ,0x01 //REPORT_COUNT (1)
- ,0x75 ,0x03 //REPORT_SIZE (3)
- ,0x81 ,0x03 //INPUT ()
- ,0xc0 //End Collection (Physical)
- ,0xc0 //End Collection (Application)
- //end mouse data
- ,0x06 ,0x01 ,0xff
- ,0x09 ,0x01 //Usage (Consumer Control)
- ,0xa1 ,0x02 //COLLECTION ()
- ,0x85 ,0x08 //HIDAPP_VOICE_REPORT_ID, //report ID (HIDAPP_KEYBOARD_REPORT_ID)
- ,0x09 ,0x14
- ,0x75 ,0x08 //Report Size (8)
- ,0x95 ,0x14 //Report Count (20)
- ,0x15 ,0x80 //Logical Minimum (80)
- ,0x25 ,0x7f //Logical Minimum (7f)
- ,0x81 ,0x22 //Input ()
- ,0x85 ,0x04 //report ID ()
- ,0x09 ,0x04 //USAGE ()
- ,0x75 ,0x08 //Report Size (8)
- ,0x95 ,0x01 //Report Count (1)
- ,0x91 ,0x02 //Output
- ,0xc0
- };
- **/
- //#define BLE_NAME_LENTH 7
- //uint8_t ble_name[BLE_NAME_LENTH] = {'1','1','x','x','B','L','E'};
- //uint8_t ble_conn_parameter[]={0x10,0x00,0x18,0x00,0x10,0x00,0x58,0x02};
- //uint8_t YICHIP_OTA_SERVICE[] = {0xf0,0xff};
- //uint8_t YICHIP_OTA_NOTIFY[] = {0xf4,0xff};
- //uint8_t YICHIP_OTA_WRITE[] = {0xf5,0xff};
- // const ATT_TABLE_TYPE Att_list2[] = {
- // //Primary Service: GAP
- // {0x01, 2, PRIMARY_SERVICE, 2, SERVICE_GENERIC_ACC},
- // //#Characteristic: Device Name
- // {0x02, 2, GATT_CHARACTERISTIC, 1, READ_PREMITTED_ONLY},
- // {0x03, 2, CHRCTR_DEVICE_NAME, BLE_NAME_LENTH, ble_name},
- // //Characteristic: Appearance
- // {0x04, 2, GATT_CHARACTERISTIC, 1, READ_PREMITTED_ONLY},
- // {0x05, 2, CHRCTR_APPEARANCE, 2, appearance_value},
- // //Perpheral Preferred Connection Parameters
- // {0x06, 2, GATT_CHARACTERISTIC, 1, READ_PREMITTED_ONLY},
- // {0x07, 2, CHCTR_PerPreferred_Connection_Parameters, 8, ble_conn_parameter},
- // //Primary service yichip transmit
- // {0x08, 2, SECONDARY_SERVICE, 2, READ_PREMITTED_ONLY},
- // //Service Changed
- // {0x09, 2, GATT_CHARACTERISTIC, 1, INDICATE_PREMITTED_ONLY},
- // {0x0a, 2, CHRCTR_SERVICE_CHANGED, 1, 0},
- // //Client Characteristic Configuration
- // {0x0b, 2, CHARACTERTIC_CONFIGURATION, 1, 00},
- // //ota service
- // {0x0c, 2, PRIMARY_SERVICE, 2, YICHIP_OTA_SERVICE},
- // //ota notify
- // {0x0d, 2, GATT_CHARACTERISTIC, 1, READ_NOTIFY_PREMITTED},
- // {0x0e, 2, YICHIP_OTA_NOTIFY, 20, yichip_ota_notify_value},
- // {0x0f, 2, CHARACTERTIC_CONFIGURATION, 2, yichip_ota_notify_conf_value},
- // //ota write
- // {0x10, 2, GATT_CHARACTERISTIC, 1,WRITE_WITHOUT_RESPONSE_PREMITTED_ONLY},
- // {0x11, 2, YICHIP_OTA_WRITE, 20, yichip_ota_write_value},
- // 0,
- // 0,
- // }
- #ifdef att_list_struct
- uint8_t att_list_init();
- #else
- uint8_t att_list_init2(uint8_t *AttPtr, uint16_t len);
- void Att_profile_Config();
- #endif
- #endif
|