summaryrefslogtreecommitdiff
path: root/src/main.cpp
blob: bc93dd564fc37cfaefe4b6ce298971ae3964ab0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <Arduino.h>
#include <USB.h>
#include <USBHIDKeyboard.h>

#include <BLEDevice.h>
#include <BLEScan.h>
#include "libs/BleMouse.h"

#include <RF24.h>
#include <nRF24L01.h>

#include "libs/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 "ui/display.h"
#include "utils/buttons.h"
#include "ui/menu.h"

#include "config.h"
#include "rf/cc1101.h"

// ================= USB HID =================
USBHIDKeyboard Keyboard;

// ===== BLE MOUSE =====
BleMouse bleMouse("Orion-RF", "Orion-RF", 100);


RF24 radio1(CE1_PIN, CSN1_PIN);
RF24 radio2(CE2_PIN, CSN2_PIN);
SPIClass *RADIO_SPI;


void deactivateNRF1() {
  digitalWrite(CSN1_PIN, HIGH);
  digitalWrite(CE1_PIN, LOW);
}

void deactivateNRF2() {
  digitalWrite(CSN2_PIN, HIGH);
  digitalWrite(CE2_PIN, LOW);
}


// ================= 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);
    deactivateNRF1();
    deactivateNRF2();

    RADIO_SPI = new SPIClass(FSPI);
    RADIO_SPI->begin(NRF_SCK, NRF_MISO, NRF_MOSI);

    // ===== CC1101 SPI INIT =====
    //SPI.begin(
    //    cc1101_SCK,
    //    cc1101_MISO,
    //    cc1101_MOSI,
    //    CC1101_CS
    //);

    //pinMode(CC1101_CS, OUTPUT);
    //pinMode(CC1101_2_CS, OUTPUT);

    //digitalWrite(CC1101_CS, HIGH);
    //digitalWrite(CC1101_2_CS, HIGH);

    printSystemUsage();

    Serial.println("SYSTEM READY");
}

// ================= LOOP =================
void loop()
{
   menuLoop();
}