19 #ifndef __ARTIK_BLUETOOTH_H 20 #define __ARTIK_BLUETOOTH_H 51 #define MAX_BT_NAME_LEN 128 52 #define MAX_BT_ADDR_LEN 128 53 #define MAX_BT_UUID_LEN 128 55 #define BT_ADV_TYPE_BROADCAST "broadcast" 56 #define BT_ADV_TYPE_PERIPHERAL "peripheral" 62 BT_CAPA_KEYBOARDDISPLAY = 0,
66 BT_CAPA_NOINPUTNOOUTPUT,
79 BT_EVENT_SPP_DISCONNECT,
80 BT_EVENT_AGENT_REQUEST_PINCODE,
81 BT_EVENT_AGENT_DISPLAY_PINCODE,
82 BT_EVENT_AGENT_REQUEST_PASSKEY,
83 BT_EVENT_AGENT_DISPLAY_PASSKEY,
84 BT_EVENT_AGENT_CONFIRM,
85 BT_EVENT_AGENT_AUTHORIZE,
86 BT_EVENT_AGENT_AUTHORIZE_SERVICE,
87 BT_EVENT_AGENT_RELEASE,
88 BT_EVENT_AGENT_CANCEL,
90 BT_EVENT_PF_HEARTRATE,
92 BT_EVENT_SERVICE_RESOLVED,
93 BT_EVENT_GATT_CHARACTERISTIC,
94 BT_EVENT_GATT_SERVICE_READY,
95 BT_EVENT_ADVERTISING_READY,
138 artik_bt_event event;
164 BT_MAJOR_DEVICE_CLASS_MISC = 0x00,
166 BT_MAJOR_DEVICE_CLASS_COMPUTER = 0x01,
168 BT_MAJOR_DEVICE_CLASS_PHONE = 0x02,
170 BT_MAJOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT = 0x03,
172 BT_MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x04,
174 BT_MAJOR_DEVICE_CLASS_PERIPHERAL = 0x05,
176 BT_MAJOR_DEVICE_CLASS_IMAGING = 0x06,
178 BT_MAJOR_DEVICE_CLASS_WEARABLE = 0x07,
180 BT_MAJOR_DEVICE_CLASS_TOY = 0x08,
182 BT_MAJOR_DEVICE_CLASS_HEALTH = 0x09,
184 BT_MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1F
192 BT_MINOR_DEVICE_CLASS_COMPUTER_UNCATEGORIZED = 0x00,
194 BT_MINOR_DEVICE_CLASS_COMPUTER_DESKTOP_WORKSTATION = 0x04,
196 BT_MINOR_DEVICE_CLASS_COMPUTER_SERVER_CLASS = 0x08,
198 BT_MINOR_DEVICE_CLASS_COMPUTER_LAPTOP = 0x0C,
200 BT_MINOR_DEVICE_CLASS_COMPUTER_HANDHELD_PC_OR_PDA = 0x10,
202 BT_MINOR_DEVICE_CLASS_COMPUTER_PALM_SIZED_PC_OR_PDA = 0x14,
204 BT_MINOR_DEVICE_CLASS_COMPUTER_WEARABLE_COMPUTER = 0x18,
207 BT_MINOR_DEVICE_CLASS_PHONE_UNCATEGORIZED = 0x00,
209 BT_MINOR_DEVICE_CLASS_PHONE_CELLULAR = 0x04,
211 BT_MINOR_DEVICE_CLASS_PHONE_CORDLESS = 0x08,
213 BT_MINOR_DEVICE_CLASS_PHONE_SMART_PHONE = 0x0C,
215 BT_MINOR_DEVICE_CLASS_PHONE_WIRED_MODEM_OR_VOICE_GATEWAY = 0x10,
217 BT_MINOR_DEVICE_CLASS_PHONE_COMMON_ISDN_ACCESS = 0x14,
220 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_FULLY_AVAILABLE = 0x04,
222 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_1_TO_17_PERCENT_UTILIZED = 0x20,
224 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_17_TO_33_PERCENT_UTILIZED = 0x40,
226 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_33_TO_50_PERCENT_UTILIZED = 0x60,
228 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_50_to_67_PERCENT_UTILIZED = 0x80,
230 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_67_TO_83_PERCENT_UTILIZED = 0xA0,
232 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_83_TO_99_PERCENT_UTILIZED = 0xC0,
234 BT_MINOR_DEVICE_CLASS_LAN_NETWORK_ACCESS_POINT_NO_SERVICE_AVAILABLE = 0xE0,
237 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_UNCATEGORIZED = 0x00,
239 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_WEARABLE_HEADSET = 0x04,
241 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HANDS_FREE = 0x08,
243 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_MICROPHONE = 0x10,
245 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_LOUDSPEAKER = 0x14,
247 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HEADPHONES = 0x18,
249 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO = 0x1C,
251 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAR_AUDIO = 0x20,
253 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_SET_TOP_BOX = 0x24,
255 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_HIFI_AUDIO_DEVICE = 0x28,
257 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VCR = 0x2C,
259 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CAMERA = 0x30,
261 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_CAMCORDER = 0x34,
263 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_MONITOR = 0x38,
265 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_LOUDSPEAKER = 0x3C,
267 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING = 0x40,
269 BT_MINOR_DEVICE_CLASS_AUDIO_VIDEO_GAMING_TOY = 0x48,
272 BT_MINOR_DEVICE_CLASS_PERIPHERA_UNCATEGORIZED = 0x00,
274 BT_MINOR_DEVICE_CLASS_PERIPHERAL_KEY_BOARD = 0x40,
276 BT_MINOR_DEVICE_CLASS_PERIPHERAL_POINTING_DEVICE = 0x80,
278 BT_MINOR_DEVICE_CLASS_PERIPHERAL_COMBO_KEYBOARD_POINTING_DEVICE = 0xC0,
280 BT_MINOR_DEVICE_CLASS_PERIPHERAL_JOYSTICK = 0x04,
282 BT_MINOR_DEVICE_CLASS_PERIPHERAL_GAME_PAD = 0x08,
284 BT_MINOR_DEVICE_CLASS_PERIPHERAL_REMOTE_CONTROL = 0x0C,
286 BT_MINOR_DEVICE_CLASS_PERIPHERAL_SENSING_DEVICE = 0x10,
288 BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITIZER_TABLET = 0x14,
290 BT_MINOR_DEVICE_CLASS_PERIPHERAL_CARD_READER = 0x18,
292 BT_MINOR_DEVICE_CLASS_PERIPHERAL_DIGITAL_PEN = 0x1C,
294 BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_SCANNER = 0x20,
296 BT_MINOR_DEVICE_CLASS_PERIPHERAL_HANDHELD_GESTURAL_INPUT_DEVICE = 0x24,
299 BT_MINOR_DEVICE_CLASS_IMAGING_DISPLAY = 0x10,
301 BT_MINOR_DEVICE_CLASS_IMAGING_CAMERA = 0x20,
303 BT_MINOR_DEVICE_CLASS_IMAGING_SCANNER = 0x40,
305 BT_MINOR_DEVICE_CLASS_IMAGING_PRINTER = 0x80,
308 BT_MINOR_DEVICE_CLASS_WEARABLE_WRIST_WATCH = 0x04,
310 BT_MINOR_DEVICE_CLASS_WEARABLE_PAGER = 0x08,
312 BT_MINOR_DEVICE_CLASS_WEARABLE_JACKET = 0x0C,
314 BT_MINOR_DEVICE_CLASS_WEARABLE_HELMET = 0x10,
316 BT_MINOR_DEVICE_CLASS_WEARABLE_GLASSES = 0x14,
319 BT_MINOR_DEVICE_CLASS_TOY_ROBOT = 0x04,
321 BT_MINOR_DEVICE_CLASS_TOY_VEHICLE = 0x08,
323 BT_MINOR_DEVICE_CLASS_TOY_DOLL_ACTION = 0x0C,
325 BT_MINOR_DEVICE_CLASS_TOY_CONTROLLER = 0x10,
327 BT_MINOR_DEVICE_CLASS_TOY_GAME = 0x14,
330 BT_MINOR_DEVICE_CLASS_HEALTH_UNCATEGORIZED = 0x00,
332 BT_MINOR_DEVICE_CLASS_HEALTH_BLOOD_PRESSURE_MONITOR = 0x04,
334 BT_MINOR_DEVICE_CLASS_HEALTH_THERMOMETER = 0x08,
336 BT_MINOR_DEVICE_CLASS_HEALTH_WEIGHING_SCALE = 0x0C,
338 BT_MINOR_DEVICE_CLASS_HEALTH_GLUCOSE_METER = 0x10,
340 BT_MINOR_DEVICE_CLASS_HEALTH_PULSE_OXIMETER = 0x14,
342 BT_MINOR_DEVICE_CLASS_HEALTH_HEART_PULSE_RATE_MONITOR = 0x18,
344 BT_MINOR_DEVICE_CLASS_HEALTH_DATA_DISPLAY = 0x1C,
346 BT_MINOR_DEVICE_CLASS_HEALTH_STEP_COUNTER = 0x20,
348 BT_MINOR_DEVICE_CLASS_HEALTH_BODY_COMPOSITION_ANALYZER = 0x24,
350 BT_MINOR_DEVICE_CLASS_HEALTH_PEAK_FLOW_MONITOR = 0x28,
352 BT_MINOR_DEVICE_CLASS_HEALTH_MEDICATION_MONITOR = 0x2C,
354 BT_MINOR_DEVICE_CLASS_HEALTH_KNEE_PROSTHESIS = 0x30,
356 BT_MINOR_DEVICE_CLASS_HEALTH_ANKLE_PROSTHESIS = 0x34
363 BT_SERVICE_CLASS_LIMITED_DISCOVERABLE_MODE = 0x002000,
364 BT_SERVICE_CLASS_POSITIONING = 0x010000,
365 BT_SERVICE_CLASS_NETWORKING = 0x020000,
366 BT_SERVICE_CLASS_RENDERING = 0x040000,
367 BT_SERVICE_CLASS_CAPTURING = 0x080000,
368 BT_SERVICE_CLASS_OBJECT_TRANSFER = 0x100000,
369 BT_SERVICE_CLASS_AUDIO = 0x200000,
370 BT_SERVICE_CLASS_TELEPHONY = 0x400000,
371 BT_SERVICE_CLASS_INFORMATION = 0x800000
403 BT_GATT_CHAR_PROPERTY_BROADCAST = 0x01,
405 BT_GATT_CHAR_PROPERTY_READ = 0x02,
407 BT_GATT_CHAR_PROPERTY_WRITE_NO_RESPONSE = 0x04,
409 BT_GATT_CHAR_PROPERTY_WRITE = 0x08,
411 BT_GATT_CHAR_PROPERTY_NOTIFY = 0x10,
413 BT_GATT_CHAR_PROPERTY_INDICATE = 0x20,
415 BT_GATT_CHAR_PROPERTY_SIGNED_WRITE = 0x40
423 BT_GATT_DESC_PROPERTY_READ = 0x01,
425 BT_GATT_DESC_PROPERTY_WRITE = 0x02,
427 BT_GATT_DESC_PROPERTY_ENC_READ = 0x04,
429 BT_GATT_DESC_PROPERTY_ENC_WRITE = 0x08,
431 BT_GATT_DESC_PROPERTY_ENC_AUTH_READ = 0x10,
433 BT_GATT_DESC_PROPERTY_ENC_AUTH_WRITE = 0x20,
435 BT_GATT_DESC_PROPERTY_SEC_READ = 0x40,
437 BT_GATT_DESC_PROPERTY_SEC_WRITE = 0x80
445 BT_GATT_REQ_STATE_TYPE_OK,
447 BT_GATT_REQ_STATE_TYPE_FAILED,
449 BT_GATT_REQ_STATE_TYPE_IN_PROGRESS,
451 BT_GATT_REQ_STATE_TYPE_NOT_PERMITTED,
453 BT_GATT_REQ_STATE_TYPE_INVALID_VALUE_LENGTH,
455 BT_GATT_REQ_STATE_TYPE_NOT_AUTHORIZED,
457 BT_GATT_REQ_STATE_TYPE_NOT_SUPPORTED
476 unsigned char *bytes;
494 unsigned char *value;
504 unsigned char *value;
528 const unsigned char *value,
560 char *remote_address;
578 int manufacturer_data_len;
580 char *manufacturer_data;
582 short manufacturer_id;
584 char manufacturer_name[MAX_BT_NAME_LEN];
590 char svc_uuid[MAX_BT_UUID_LEN];
623 const char **svc_uuid;
627 unsigned short mfr_id;
629 unsigned char *mfr_data;
633 const char **solicit_uuid;
635 int solicit_uuid_len;
639 unsigned char *svc_data;
815 unsigned int duration;
904 char *prop_str,
long long prop_int);
914 unsigned short energy;
916 unsigned short *interval;
917 unsigned short interval_count;
946 artik_bt_agent_request_handle handle;
968 unsigned int passkey;
970 unsigned int entered;
978 artik_bt_agent_request_handle handle;
982 unsigned int passkey;
990 artik_bt_agent_request_handle handle;
1134 *user_callbacks,
unsigned int size);
1236 bool (*is_scanning)(void);
1299 bool (*is_paired)(
const char *addr);
1307 bool (*is_connected)(
const char *addr);
1315 bool (*is_trusted)(
const char *addr);
1323 bool (*is_blocked)(
const char *addr);
1354 artik_error(*gatt_add_descriptor) (
int service_id,
int char_id,
1371 artik_error(*gatt_remove_characteristic) (
int sid,
int cid);
1382 artik_error(*gatt_remove_descriptor) (
int sid,
int cid,
int did);
1399 artik_error(*gatt_set_char_on_write_request) (
int svc_id,
int char_id,
1408 artik_error(*gatt_set_char_on_notify_request) (
int svc_id,
int char_id,
1420 artik_error(*gatt_set_desc_on_read_request) (
int svc_id,
int char_id,
int desc_id,
1432 artik_error(*gatt_set_desc_on_write_request) (
int svc_id,
int char_id,
int desc_id,
1479 artik_error(*gatt_get_descriptor_list) (
const char *addr,
const char *srv_uuid,
1480 const char *char_uuid,
artik_bt_uuid **uuid_list,
int *len);
1491 artik_error(*gatt_char_read_value) (
const char *addr,
const char *srv_uuid,
1492 const char *char_uuid,
unsigned char **byte,
int *byte_len);
1503 artik_error(*gatt_char_write_value) (
const char *addr,
const char *srv_uuid,
1504 const char *char_uuid,
const unsigned char byte[],
int byte_len);
1516 artik_error(*gatt_desc_read_value) (
const char *addr,
const char *srv_uuid,
1517 const char *char_uuid,
const char *desc_uuid,
1518 unsigned char **byte,
int *byte_len);
1530 artik_error(*gatt_desc_write_value) (
const char *addr,
const char *srv_uuid,
1531 const char *char_uuid,
const char *desc_uuid,
1532 const unsigned char byte[],
int byte_len);
1541 artik_error(*gatt_start_notify) (
const char *addr,
const char *srv_uuid,
1542 const char *char_uuid);
1551 artik_error(*gatt_stop_notify) (
const char *addr,
const char *srv_uuid,
1552 const char *char_uuid);
1562 artik_error(*gatt_get_char_properties) (
const char *addr,
const char *srv_uuid,
1589 int len,
const unsigned char *value);
1599 artik_bt_gatt_req_state_type state,
const char *err_msg);
1609 artik_error(*gatt_notify) (
int svc_id,
int char_id,
unsigned char *byte,
1634 artik_error(*avrcp_controller_list_item)(
int start_item,
int end_item,
1655 artik_bt_avrcp_repeat_mode * repeat_mode);
1664 artik_error(*avrcp_controller_set_repeat_mode)(artik_bt_avrcp_repeat_mode repeat_mode);
1671 bool (*avrcp_controller_is_connected)(void);
1807 bool (*avrcp_controller_is_browsable)(void);
1868 const char *uuid,
char **network_interface);
1882 bool (*pan_is_connected)(void);
2045 artik_error(*agent_send_pincode)(artik_bt_agent_request_handle handle,
char *pincode);
2057 artik_error(*agent_send_passkey)(artik_bt_agent_request_handle handle,
unsigned int passkey);
2068 artik_error(*agent_send_error)(artik_bt_agent_request_handle handle, artik_bt_agent_request_error e,
2069 const char *err_msg);
2079 artik_error(*agent_send_empty_response)(artik_bt_agent_request_handle handle);
the struct of callback user data in BT_EVENT_AGENT_AUTHORIZE_SERVICE event.
char * album
Name of the album.
artik_bt_gatt_req_state_type
Request status.
Description of AVRCP item's properties.
char * type
Type of the item.
Class structure of device and service.
Bluetooth advertisement definition.
Bluetooth GATT data definition.
Bluetooth module operations.
unsigned int pair_timeout
char * player
Player object path.
artik_bt_uuid * uuid_list
struct artik_bt_ftp_file artik_bt_ftp_file
List of FTP items.
char * folder
Folder type.
char * status
Give the current status of the transfer.
Bluetooth adapter definition.
GATT descriptor definition.
bool playable
Indicate if the media can be played.
Description of SPP profile option.
unsigned long long transfered
artik_bt_device_type
This enum type is used to specify the type of device.
artik_bt_avrcp_track_metadata * metadata
Metadata of the media.
artik_bt_agent_request_error
The errors returned to the bluetooth service when a request failed.
artik_bt_event
All events come from the Bluetooth module.
artik_bt_minor_device_class
Enumerations of minor device class.
artik_bt_avrcp_repeat_mode
This enum type is used to specify the repeat mode.
the struct of callback user data in BT_EVENT_AGENT_DISPLAY_PINCODE event.
artik_bt_device_service_class
Service class part of class of device returned from device discovery.
artik_bt_gatt_desc_properties
Descriptor property.
unsigned int discover_timeout
artik_bt_gatt_char_properties
Characteristic property.
bool require_authorization
the struct of callback user data in BT_EVENT_SPP_CONNECT event.
Bluetooth scan filter definition.
void * artik_bt_gatt_req
GATT request handle type.
struct artik_bt_avrcp_item * next_item
Next item in the list.
char * name
Displayable name.
int artik_error
Error type.
Bluetooth UUID definition.
struct artik_bt_avrcp_item artik_bt_avrcp_item
List of AVRCP items.
unsigned int number
Number of the media.
void(* artik_bt_callback)(artik_bt_event event, void *data, void *user_data)
Event callback function prototype.
void(* artik_bt_gatt_req_read)(artik_bt_gatt_req request, void *user_data)
Method called when a client performs read on a characteristic.
void(* artik_bt_gatt_req_write)(artik_bt_gatt_req request, const unsigned char *value, int len, void *user_data)
Method called when a client performs write on a characteristic.
void * artik_bt_agent_request_handle
Bluetooth service request handle type.
the struct to set callbacks of the Bluetooth module.
Bluetooth HRP data definition.
char * title
Title of the media.
artik_bt_uuid * uuid_list
Bluetooth device definition.
artik_bt_scan_type
This enum type is used to specify the type of scan.
artik_bt_agent_capability
This enumeration reflects the input and output capabilities of the agent.
the struct of callback user data in BT_EVENT_AGENT_REQUEST_PINCODE, BT_EVENT_AGENT_REQUEST_PASSKEY an...
int index
The index of this item.
struct artik_bt_ftp_file * next_file
char * item_obj_path
Pointer to string internally used by the API.
artik_bt_avrcp_item_property * property
Properties for this item.
the struct of callback user data in BT_EVENT_AGENT_CONFIRM event.
void(* artik_bt_gatt_req_notify)(bool state, void *user_data)
Method called when a client wants subscribe or unsubscribe to GATT notification.
char * artist
Name of the artist.
Bluetooth FTP definition.
bool require_authentication
unsigned int number_of_tracks
Number of tracks in the album.
GATT characteristic definition.
char * role
This field is used by asymetric profile that do not have UUIDs available to uniquely identify each si...
artik_bt_major_device_class
Enumerations of major device class.
the struct of callback user data in BT_EVENT_AGENT_DISPLAY_PASSKEY event.