44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
#include "kartReciever.hpp"
|
|
|
|
#include <esp_now.h>
|
|
#include <esp_wifi.h>
|
|
|
|
#include "WiFi.h"
|
|
kartReceiver kart_receiver;
|
|
static kart_msg rcv_msg;
|
|
static void (*onReceiveCallback)(kart_msg *message) = nullptr;
|
|
|
|
static void OnDataRecv(const esp_now_recv_info_t *esp_now_info, const uint8_t *data, int data_len) {
|
|
// todo rssi filtering
|
|
memcpy(&rcv_msg, data, sizeof(kart_msg));
|
|
// Serial.print("Bytes received: ");
|
|
// Serial.println(data_len);
|
|
if (onReceiveCallback) {
|
|
onReceiveCallback(&rcv_msg);
|
|
}
|
|
}
|
|
|
|
void kartReceiver::init() {
|
|
}
|
|
bool kartReceiver::begin() {
|
|
WiFi.disconnect();
|
|
WiFi.mode(WIFI_STA);
|
|
if (esp_now_init() != ESP_OK) {
|
|
Serial.println("Error initializing ESP-NOW");
|
|
return false;
|
|
}
|
|
esp_now_register_recv_cb(OnDataRecv);
|
|
run_status = true;
|
|
return true;
|
|
}
|
|
void kartReceiver::end() {
|
|
esp_now_deinit();
|
|
run_status = false;
|
|
}
|
|
bool kartReceiver::isBegin() {
|
|
return run_status;
|
|
}
|
|
void kartReceiver::registerCallback(void (*onReceiveCallback_)(kart_msg *message)) {
|
|
onReceiveCallback = onReceiveCallback_;
|
|
}
|