79 lines
2.4 KiB
C++
79 lines
2.4 KiB
C++
/*
|
|
* 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 <String.h>
|
|
|
|
#include <bluetooth/bluetooth.h>
|
|
|
|
#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
|