Add visual indicator of RX/TX

Option CC_SIGNAL_NEOPIXEL or CC_SIGNAL_GPIO13 to activate or suppress it
This commit is contained in:
tuxphone 2024-06-02 20:42:49 +02:00
parent 450cad78a7
commit f30fdc42b3
2 changed files with 61 additions and 1 deletions

View File

@ -5,7 +5,7 @@ void setup() {
Serial.begin(115200);
delay(5000);
#endif
init_signalize();
msgID.clear();
txQueue.clear();
NodeDB.clear();
@ -39,6 +39,7 @@ void loop() {
if (PacketReceived) {
PacketReceived = false;
signalizeRX_ON();
Packet_t pck;
pck.packetTime = millis();
pck.size = radio.getPacketLength();
@ -145,6 +146,7 @@ void loop() {
// wait for serial output to conplete
delay(10);
#endif
signalizeLED_OFF();
MCU_deepsleep(); // sleep until IRQ
}
}
@ -199,6 +201,7 @@ bool perhapsSend(Packet_t* p) {
MSG("failed, ERR = %i - resume RX\n\r", err);
return false;
}
signalizeTX_ON();
delay(10);
MCU_deepsleep(); // wait for TX to complete, will wake on any DIO1
err = radio.getIrqStatus();
@ -651,4 +654,46 @@ void NodeStoreClass::add(meshtastic_NodeInfo* Node) {
strncpy(this->nodeDB[idx].user.short_name, Node->user.short_name, sizeof(this->nodeDB[idx].user.short_name) - 1);
strncpy(this->nodeDB[idx].user.long_name, Node->user.long_name, sizeof(this->nodeDB[idx].user.long_name) - 1);
}
}
void init_signalize(void) {
#ifdef CC_SIGNAL_NEOPIXEL
pinMode(Vext,OUTPUT);
digitalWrite(Vext,LOW);
pixels.begin();
pixels.clear();
#endif
#ifdef CC_SIGNAL_GPIO13
pinMode(GPIO13, OUTPUT);
#endif
}
void signalizeRX_ON(void){
#ifdef CC_SIGNAL_NEOPIXEL
pixels.setPixelColor(0, pixels.Color(0, 32, 0));
pixels.show();
#endif
#ifdef CC_SIGNAL_GPIO13
digitalWrite(GPIO13, HIGH);
#endif
}
void signalizeTX_ON(void){
#ifdef CC_SIGNAL_NEOPIXEL
pixels.setPixelColor(0, pixels.Color(32, 0, 0));
pixels.show();
#endif
#ifdef CC_SIGNAL_GPIO13
digitalWrite(GPIO13, HIGH);
#endif
}
void signalizeLED_OFF(void){
#ifdef CC_SIGNAL_NEOPIXEL
pixels.clear();
pixels.show();
#endif
#ifdef CC_SIGNAL_GPIO13
digitalWrite(GPIO13, LOW);
#endif
}

View File

@ -1,3 +1,4 @@
#pragma Once
#include <Arduino.h>
// #define SILENT // turn off serial output
@ -18,6 +19,10 @@
#define CC_MONITOR_ONLY false // set true to suppress transmitting of packets (just monitor the traffic)
#define CC_SIGNAL_NEOPIXEL // signal received packets with a green blink, signal transmits with red blink
//#define CC_SIGNAL_GPIO13 // signal received packets with the green LED on HTCC-AB02A
// http://community.heltec.cn/t/htcc-ab02a-has-a-secret-green-led/3092/7
#define MAX_ID_LIST 64 // number of stored packet IDs to prevent unnecesary repeating
#define MAX_NODE_LIST 20 // number of stored known nodes
#define MAX_TX_QUEUE 8 // max number of packets which can be waiting for transmission
@ -62,6 +67,11 @@ static const uint8_t mypsk[] = {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59,
extern uint32_t systime; // CubeCell global system time count, Millis
SX1262 radio = new Module(RADIOLIB_BUILTIN_MODULE);
#ifdef CC_SIGNAL_NEOPIXEL
#include "CubeCell_NeoPixel.h"
CubeCell_NeoPixel pixels(1, RGB, NEO_GRB + NEO_KHZ800);
#endif
#endif // CUBECELL
/****************/
@ -158,6 +168,11 @@ bool perhapsDecode(Packet_t* p);
void printPacket(void);
void printVariants(void);
void signalizeRX_ON(void);
void signalizeTX_ON(void);
void signalizeLED_OFF(void);
void init_signalize(void);
/**************
* Meshtastic * https://github.com/meshtastic/firmware
**************/