aboutsummaryrefslogtreecommitdiff
path: root/firmware/firmware.ino
diff options
context:
space:
mode:
authorkrolyxon <me@krolyxon.com>2026-05-04 22:48:07 +0530
committerkrolyxon <me@krolyxon.com>2026-05-04 22:48:07 +0530
commit0a40daf4fad5c1593c6e1696ac0cab992c799e2e (patch)
tree28b6d356872f6030053028dd46e3bb73f81ac06b /firmware/firmware.ino
initial commit
Diffstat (limited to 'firmware/firmware.ino')
-rw-r--r--firmware/firmware.ino128
1 files changed, 128 insertions, 0 deletions
diff --git a/firmware/firmware.ino b/firmware/firmware.ino
new file mode 100644
index 0000000..5b71a60
--- /dev/null
+++ b/firmware/firmware.ino
@@ -0,0 +1,128 @@
+#include <Arduino.h>
+#include <USB.h>
+#include <USBHIDKeyboard.h>
+
+#include <BLEDevice.h>
+#include <BLEScan.h>
+
+#include <RF24.h>
+#include <nRF24L01.h>
+
+#include "ELECHOUSE_CC1101_SRC_DRV.h"
+
+#include <WiFi.h>
+#include <esp_wifi.h>
+
+#include <esp_chip_info.h>
+#include <esp_heap_caps.h>
+#include <esp_system.h>
+#include <SPI.h>
+
+
+#include "display.h"
+#include "buttons.h"
+#include "menu.h"
+
+#include "config.h"
+#include "cc1101.h"
+
+// ================= USB HID =================
+USBHIDKeyboard Keyboard;
+
+
+RF24 radio1(CE1_PIN, CSN1_PIN);
+RF24 radio2(CE2_PIN, CSN2_PIN);
+SPIClass *RADIO_SPI;
+
+
+
+
+// ================= BLE SCAN =================
+BLEScan *pBLEScan;
+
+
+void startBLEScan()
+{
+ BLEDevice::init("");
+
+ pBLEScan = BLEDevice::getScan();
+
+ pBLEScan->setActiveScan(true);
+
+ pBLEScan->start(5);
+
+ Serial.println("BLE scan complete");
+}
+
+// ================= SYSTEM INFO =================
+void printSystemUsage()
+{
+ esp_chip_info_t chip_info;
+
+ esp_chip_info(&chip_info);
+
+ Serial.printf("CPU cores: %d\n", chip_info.cores);
+
+ Serial.printf(
+ "Free heap: %d bytes\n",
+ heap_caps_get_free_size(MALLOC_CAP_DEFAULT)
+ );
+
+ Serial.printf(
+ "PSRAM free: %d bytes\n",
+ heap_caps_get_free_size(MALLOC_CAP_SPIRAM)
+ );
+}
+
+void showSplash()
+{
+ u8g2.clearBuffer();
+
+ u8g2.setFont(u8g2_font_logisoso20_tr); // big font
+ u8g2.drawStr(10, 40, "Orion-RF");
+
+ u8g2.setFont(u8g2_font_5x8_tr); // small subtitle
+ u8g2.drawStr(25, 58, "Initializing...");
+
+ u8g2.sendBuffer();
+
+ delay(1500); // 1.5 sec
+}
+
+
+// ================= SETUP =================
+void setup()
+{
+ Serial.begin(115200);
+
+ displayInit();
+ showSplash();
+
+ buttonsInit();
+ menuInit();
+
+ delay(1500);
+
+ USB.begin();
+ Keyboard.begin();
+
+ // NRF SPI safety
+ pinMode(CSN1_PIN, OUTPUT);
+ digitalWrite(CSN1_PIN, HIGH);
+
+ pinMode(CSN2_PIN, OUTPUT);
+ digitalWrite(CSN2_PIN, HIGH);
+
+ RADIO_SPI = new SPIClass(FSPI);
+ RADIO_SPI->begin(NRF_SCK, NRF_MISO, NRF_MOSI);
+
+ printSystemUsage();
+
+ Serial.println("SYSTEM READY");
+}
+
+// ================= LOOP =================
+void loop()
+{
+ menuLoop();
+}