/* * Copyright 2007 Oliver Ruiz Dorantes, oliver.ruiz.dorantes_at_gmail.com * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef _LOCALDEVICE_IMPL_H_ #define _LOCALDEVICE_IMPL_H_ #include #include #include "LocalDeviceHandler.h" #include "HCIDelegate.h" #include "HCIControllerAccessor.h" #include "HCITransportAccessor.h" class LocalDeviceImpl : public LocalDeviceHandler { private: LocalDeviceImpl(HCIDelegate* hd); public: // Factory methods static LocalDeviceImpl* CreateControllerAccessor(BPath* path); static LocalDeviceImpl* CreateTransportAccessor(BPath* path); ~LocalDeviceImpl(); void Unregister(); void HandleEvent(struct hci_event_header* event); // Request handling status_t ProcessSimpleRequest(BMessage* request); private: void HandleUnexpectedEvent(struct hci_event_header* event); void HandleExpectedRequest(struct hci_event_header* event, BMessage* request); // Events handling void CommandComplete(struct hci_ev_cmd_complete* event, BMessage* request, int32 index); void CommandStatus(struct hci_ev_cmd_status* event, BMessage* request, int32 index); void NumberOfCompletedPackets(struct hci_ev_num_comp_pkts* event); // Inquiry void InquiryResult(uint8* numberOfResponses, BMessage* request); void InquiryComplete(uint8* status, BMessage* request); void RemoteNameRequestComplete(struct hci_ev_remote_name_request_complete_reply* remotename, BMessage* request); // Connection void ConnectionComplete(struct hci_ev_conn_complete* event, BMessage* request); void ConnectionRequest(struct hci_ev_conn_request* event, BMessage* request); void DisconnectionComplete(struct hci_ev_disconnection_complete_reply* event, BMessage* request); // Pairing void PinCodeRequest(struct hci_ev_pin_code_req* event, BMessage* request); void RoleChange(struct hci_ev_role_change* event, BMessage* request); void LinkKeyNotify(struct hci_ev_link_key_notify* event, BMessage* request); void ReturnLinkKeys(struct hci_ev_return_link_keys* returnedKeys); void LinkKeyRequested(struct hci_ev_link_key_req* keyReqyested, BMessage* request); void PageScanRepetitionModeChange(struct hci_ev_page_scan_rep_mode_change* event, BMessage* request); void MaxSlotChange(struct hci_ev_max_slot_change* event, BMessage* request); void HardwareError(struct hci_ev_hardware_error* event); }; #endif