Statistics
| Branch: | Tag: | Revision:

amiro-os / components / bluetooth / bluetooth.cpp @ d607fcef

History | View | Annotate | Download (1.843 KB)

1
#include <ch.hpp>
2
#include <hal.h>
3

    
4
#include <string.h>
5

    
6
#include <amiro/bluetooth/bluetooth.hpp>
7

    
8
using namespace chibios_rt;
9
using namespace amiro;
10

    
11
/*
12
 * Class constructor
13
 */
14
BLUETOOTH::BLUETOOTH(UARTDriver* uart) : iwrap(uart) {
15
}
16

    
17
/*
18
 * Member functions
19
 */
20
void BLUETOOTH::bluetoothStart() {
21
  iwrap.start(NORMALPRIO);
22
  BaseThread::sleep(MS2ST(1000));
23
  // Reset bluetooth chip to get the first msg. (cmd/data mode or mux Mode)
24
  bluetoothReset();
25
}
26

    
27
void BLUETOOTH::bluetoothReset() {
28
  palWritePad(GPIOC, GPIOC_BT_RST, 1);
29
  BaseThread::sleep(MS2ST(10));
30
  palWritePad(GPIOC, GPIOC_BT_RST, 0);
31
  iwrap.transport.bluetoothTransportResetState();
32
    BaseThread::sleep(MS2ST(1000));
33
}
34

    
35
void BLUETOOTH::bluetoothEnableMux() {
36
  iwrap.bluetoothIwrapSendCommand("SET CONTROL MUX 1");
37
}
38

    
39
void BLUETOOTH::bluetoothDisableMux() {
40
  iwrap.bluetoothIwrapSendCommand("SET CONTROL MUX 0");
41
}
42

    
43
void BLUETOOTH::bluetoothDiscoverDevices() {
44
  iwrap.bluetoothIwrapSendCommand("INQUIRY 5");
45
  BaseThread::sleep(MS2ST(6000));
46
}
47

    
48
void BLUETOOTH::bluetoothListAllConnections() {
49
  iwrap.bluetoothIwrapSendCommand("List");
50
}
51

    
52
void BLUETOOTH::bluetoothSetName(const char *name) {
53
  int size = strlen(name) + 14;
54
  char cmd[size];
55
  strcpy(cmd, "SET BT NAME ");
56
  strcat(cmd, name);
57
  iwrap.bluetoothIwrapSendCommand(cmd);
58
}
59

    
60
void BLUETOOTH::bluetoothSetPin(const char *pin) {
61
  int size = strlen(pin) + 15;
62
  char cmd[size];
63
  strcpy(cmd, "SET BT AUTH * ");
64
  strcat(cmd, pin);
65
  iwrap.bluetoothIwrapSendCommand(cmd);
66
}
67

    
68
void BLUETOOTH::bluetoothCloseConnection(uint8_t linkid) {
69
  char cmd[8];
70
  strcpy(cmd, "CLOSE ");
71
  cmd[6] = linkid + '0';
72
  cmd[7]= '\0';
73
  iwrap.bluetoothIwrapSendCommand(cmd);
74
}
75

    
76
void BLUETOOTH::bluetoothSendCommand(const char *cmd) {
77
  iwrap.bluetoothIwrapSendCommand(cmd);
78
}
79

    
80
bool BLUETOOTH::bluetoothIsMuxMode() {
81
  return iwrap.transport.bluetoothTransportIsMuxMode();
82
}