Skip to content

Commit ff6ebfa

Browse files
enabling hci through spi commands
1 parent 4fa765b commit ff6ebfa

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

src/utility/HCINinaSpiTransport.cpp

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
This file is part of the ArduinoBLE library.
3+
4+
Copyright (c) 2024 Arduino SA
5+
6+
This Source Code Form is subject to the terms of the Mozilla Public
7+
License, v. 2.0. If a copy of the MPL was not distributed with this
8+
file, You can obtain one at http://mozilla.org/MPL/2.0/.
9+
*/
10+
11+
#if defined(ARDUINO_AVR_UNO_WIFI_REV2) || defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT) || defined(TARGET_NANO_RP2040_CONNECT)
12+
#include "HCINinaSpiTransport.h"
13+
#include <WiFiNINA.h>
14+
15+
int HCINinaSpiTransportClass::begin()
16+
{
17+
WiFiDrv::wifiDriverInit();
18+
return WiFiDrv::bleBegin();
19+
}
20+
21+
void HCINinaSpiTransportClass::end()
22+
{
23+
WiFiDrv::bleEnd();
24+
}
25+
26+
void HCINinaSpiTransportClass::wait(unsigned long timeout)
27+
{
28+
for (unsigned long start = millis(); (millis() - start) < timeout;) {
29+
if (available()) {
30+
break;
31+
}
32+
}
33+
}
34+
35+
int HCINinaSpiTransportClass::available()
36+
{
37+
return WiFiDrv::bleAvailable();
38+
}
39+
40+
int HCINinaSpiTransportClass::peek()
41+
{
42+
int res=-1;
43+
WiFiDrv::blePeek((uint8_t*)&res, 1); // read a single byte, if nothing is returned we return -1
44+
45+
return res;
46+
}
47+
48+
int HCINinaSpiTransportClass::read()
49+
{
50+
int res=-1;
51+
WiFiDrv::bleRead((uint8_t*)&res, 1); // read a single byte, if nothing is returned we return -1
52+
53+
return res;
54+
}
55+
56+
size_t HCINinaSpiTransportClass::write(const uint8_t* data, size_t length)
57+
{
58+
return WiFiDrv::bleWrite(data, length);
59+
}
60+
61+
HCINinaSpiTransportClass HCINinaSpiTransport;
62+
HCITransportInterface& HCITransport = HCINinaSpiTransport;
63+
64+
#endif

src/utility/HCINinaSpiTransport.h

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
This file is part of the ArduinoBLE library.
3+
4+
Copyright (c) 2024 Arduino SA
5+
6+
This Source Code Form is subject to the terms of the Mozilla Public
7+
License, v. 2.0. If a copy of the MPL was not distributed with this
8+
file, You can obtain one at http://mozilla.org/MPL/2.0/.
9+
*/
10+
11+
#ifndef _HCI_NINA_SPI_TRANSPORT_H_
12+
#define _HCI_NINA_SPI_TRANSPORT_H_
13+
14+
#include "HCITransport.h"
15+
16+
class HCINinaSpiTransportClass : public HCITransportInterface {
17+
public:
18+
HCINinaSpiTransportClass() {}
19+
20+
virtual int begin();
21+
virtual void end();
22+
23+
virtual void wait(unsigned long timeout);
24+
25+
virtual int available();
26+
virtual int peek();
27+
virtual int read();
28+
29+
virtual size_t write(const uint8_t* data, size_t length);
30+
};
31+
32+
#endif

0 commit comments

Comments
 (0)