Krolyxon
Commit 278646b

Branches

Tags

Refs →

orion-rfsrcrfnrf24.cpp

249 lines · 5.9 KB · C++

1#include <Arduino.h>
2#include <RF24.h>
3#include "nrf24.h"
4#include "../ui/display.h"
5#include "../buttons.h"
6#define JAM_DURATION 500
7
8extern SPIClass *RADIO_SPI;
9extern RF24 radio1;
10extern RF24 radio2;
11
12// ============ CHANNELS =============
13const byte bleChannels[] = {2, 26, 80};
14const byte bluetoothChannels[] = {
15 32, 34, 46, 48, 50, 52,
16 0, 1, 2, 4, 6, 8,
17 22, 24, 26, 28, 30,
18 74, 76, 78, 80
19};
20const byte wifiChannels[] = {
21 12, 17, 22, 27, 32,
22 37, 42, 47, 52, 57,
23 62, 67, 72
24};
25const byte usbWireless_channels[] = {40, 50, 60};
26const byte videoTransmitter_channels[] = {70, 75, 80};
27const byte zigbee_channels[] = {11, 15, 20, 25};
28const byte rc_channels[] = {1, 3, 5, 7};
29
30void initNRF(RF24 &radio)
31{
32 if (!radio.begin(RADIO_SPI)) {
33 Serial.println("NRF not found");
34 return;
35 }
36
37 radio.setAutoAck(false);
38 radio.stopListening();
39 radio.setRetries(0, 0);
40 radio.setPALevel(RF24_PA_MAX, true);
41 radio.setDataRate(RF24_2MBPS);
42 radio.openWritingPipe(0xE7E7E7E7E7LL);
43 radio.setCRCLength(RF24_CRC_DISABLED);
44 Serial.println("NRF Initialized");
45
46}
47
48
49
50//void startBleJammer() {
51// initNRF(radio1);
52// initNRF(radio2);
53//
54// Serial.println("NRF JAMMER STARTED");
55//
56// const char payload[] = "xxxxxxxxxxxxxxxx";
57//
58// u8g2.clearBuffer();
59// u8g2.drawStr(0, 10, "Jamming:");
60// u8g2.setCursor(60, 10);
61// u8g2.print("Bluetooth");
62// u8g2.sendBuffer();
63//
64// while(true) {
65//
66// // Channels (you can change this set)
67// const byte channels[] = {2, 26, 80};
68//
69//
70// for (int i = 0; i < sizeof(channels); i++) {
71// radio1.setChannel(channels[i]);
72// radio1.write(&payload, sizeof(payload));
73// //radio2.setChannel(channels[i]);
74// //radio2.write(&payload, sizeof(payload));
75// }
76//
77// if (btnBack())
78// {
79// Serial.println("Jammer stopped");
80// return;
81// }
82// }
83//
84//}
85//
86//void startBluetoothJammer()
87//{
88// initNRF(radio1);
89// initNRF(radio2);
90//
91// Serial.println("NRF JAMMER STARTED");
92//
93// const char payload[] = "xxxxxxxxxxxxxxxx";
94//
95// u8g2.clearBuffer();
96// u8g2.drawStr(0, 10, "Jamming:");
97// u8g2.setCursor(60, 10);
98// u8g2.print("Bluetooth");
99// u8g2.sendBuffer();
100//
101// while(true) {
102//
103// // Channels (you can change this set)
104// const byte channels[] = {32, 34, 46, 48, 50, 52, 0, 1, 2, 4, 6, 8, 22, 24, 26, 28, 30, 74, 76, 78, 80};
105//
106//
107// for (int i = 0; i < sizeof(channels); i++) {
108// radio1.setChannel(channels[i]);
109// radio1.write(&payload, sizeof(payload));
110// //radio2.setChannel(channels[i]);
111// //radio2.write(&payload, sizeof(payload));
112// }
113//
114// if (btnBack())
115// {
116// Serial.println("Jammer stopped");
117// return;
118// }
119// }
120//}
121
122void startJammer(const char* name, const byte* channels, size_t channelCount)
123{
124 initNRF(radio1);
125 initNRF(radio2);
126
127 Serial.println("NRF JAMMER STARTED");
128
129 const char payload[] = "xxxxxxxxxxxxxxxx";
130
131 u8g2.clearBuffer();
132 u8g2.setFont(u8g2_font_6x10_tr);
133 u8g2.drawStr(0, 15, "NRF24 Jammer");
134 u8g2.drawStr(0, 35, name);
135 u8g2.drawStr(0, 55, "BACK = Exit");
136 u8g2.sendBuffer();
137
138 while (true)
139 {
140 for (size_t i = 0; i < channelCount; i++)
141 {
142 //radio1.setChannel(channels[i]);
143 //radio1.write(&payload, sizeof(payload));
144
145 // Optional second NRF
146 // radio2.setChannel(channels[i]);
147 // radio2.write(&payload, sizeof(payload));
148
149
150 radio1.setChannel(channels[i]);
151 radio2.setChannel(channels[(i + 1) % channelCount]);
152
153 radio1.writeFast(&payload, sizeof(payload));
154 radio2.writeFast(&payload, sizeof(payload));
155 }
156
157 if (btnBack())
158 {
159 Serial.println("Jammer stopped");
160 radio1.powerDown();
161 radio2.powerDown();
162 return;
163 }
164 }
165
166 //while (true) {
167 //for (size_t i = 0; i < channelCount; i++)
168 //{
169 // radio1.setChannel(channels[i]);
170 // radio2.setChannel(channels[(i + 1) % channelCount]);
171
172 // radio1.writeFast(&payload, sizeof(payload));
173 // radio2.writeFast(&payload, sizeof(payload));
174
175 // radio1.txStandBy(1);
176 // radio2.txStandBy(1);
177
178 // delayMicroseconds(200);
179 //}
180
181
182 //if (btnBack())
183 //{
184 // Serial.println("Jammer stopped");
185
186 // radio1.powerDown();
187 // radio2.powerDown();
188
189 // return;
190 //}
191//}
192}
193
194void NRFToolsMenu(int index) {
195 switch (index) {
196 case 0:
197 // startBleJammer();
198 // BLE
199 startJammer(
200 "BLE",
201 bleChannels,
202 sizeof(bleChannels) / sizeof(bleChannels[0])
203 );
204
205 break;
206 case 1:
207 // startBluetoothJammer();
208 // Bluetooth
209 startJammer(
210 "Bluetooth",
211 bluetoothChannels,
212 sizeof(bluetoothChannels) / sizeof(bluetoothChannels[0])
213 );
214 break;
215
216 case 2:
217 startJammer(
218 "WiFi",
219 wifiChannels,
220 sizeof(wifiChannels) / sizeof(wifiChannels[0])
221 );
222 break;
223 case 3:
224 startJammer(
225 "USB Wireless",
226 usbWireless_channels,
227 sizeof(usbWireless_channels) / sizeof(usbWireless_channels[0])
228 );
229 break;
230 case 4:
231 startJammer(
232 "Video TX",
233 videoTransmitter_channels,
234 sizeof(videoTransmitter_channels) / sizeof(videoTransmitter_channels[0])
235 );
236 break;
237 case 5:
238 break;
239 startJammer(
240 "RC",
241 rc_channels,
242 sizeof(rc_channels) / sizeof(rc_channels[0])
243 );
244 break;
245 case 6:
246
247 break;
248}
249 }