mirror of
				https://github.com/manuelbl/ttn-esp32.git
				synced 2025-10-31 10:40:35 +01:00 
			
		
		
		
	More logging cases
This commit is contained in:
		| @ -43,10 +43,21 @@ struct TTNLogMessage { | |||||||
|     u1_t        saveIrqFlags; |     u1_t        saveIrqFlags; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | static const char* const SF_NAMES[] = { "FSK", "SF7", "SF8", "SF9", "SF10", "SF11", "SF12", "SFrfu" }; | ||||||
|  | static const char* const BW_NAMES[] = { "BW125", "BW250", "BW500", "BWrfu" }; | ||||||
|  | static const char* const CR_NAMES[] = { "CR 4/5", "CR 4/6", "CR 4/7", "CR 4/8" }; | ||||||
|  | static const char* const CRC_NAMES[] = { "NoCrc", "Crc" }; | ||||||
|  |  | ||||||
| void TTNLogging::initInstance() | static void printMessage(TTNLogMessage* log); | ||||||
|  | static void printEvtJoined(TTNLogMessage* log); | ||||||
|  | static void printEvtJoinFailed(TTNLogMessage* log); | ||||||
|  | static void bin2hex(const uint8_t* bin, unsigned len, char* buf, char sep = 0); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | TTNLogging* TTNLogging::initInstance() | ||||||
| { | { | ||||||
|     ttnLog.init(); |     ttnLog.init(); | ||||||
|  |     return &ttnLog; | ||||||
| } | } | ||||||
|  |  | ||||||
| void TTNLogging::init() | void TTNLogging::init() | ||||||
| @ -122,25 +133,99 @@ void TTNLogging::loggingTask(void* param) | |||||||
|         if (log == nullptr) |         if (log == nullptr) | ||||||
|             continue; |             continue; | ||||||
|  |  | ||||||
|         if (log->event == -1) |         printMessage(log); | ||||||
|         { |  | ||||||
|             ESP_LOGI(TAG, "%s: opmode=0x%x", log->message, log->opmode); |  | ||||||
|         } |  | ||||||
|         else if (log->event == -2) |  | ||||||
|         { |  | ||||||
|             ESP_LOGI(TAG, "%s: datum=0x%x, opmode=0x%x)", log->message, log->datum, log->opmode); |  | ||||||
|         } |  | ||||||
|         else if (log->event == -3) |  | ||||||
|         { |  | ||||||
|             ESP_LOGE(TAG, "%s, %d: freq=%d.%d", |  | ||||||
|                 log->message, log->datum, |  | ||||||
|                 log->freq / 1000000, (log->freq % 1000000) / 100000 |  | ||||||
|             ); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         vRingbufferReturnItem(ringBuffer, log); |         vRingbufferReturnItem(ringBuffer, log); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void printMessage(TTNLogMessage* log) | ||||||
|  | { | ||||||
|  |     switch((int)log->event) | ||||||
|  |     { | ||||||
|  |         case -1: | ||||||
|  |             ESP_LOGI(TAG, "%s: opmode=0x%x", log->message, log->opmode); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case -2: | ||||||
|  |             ESP_LOGI(TAG, "%s: datum=0x%x, opmode=0x%x)", log->message, log->datum, log->opmode); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case -3: | ||||||
|  |             ESP_LOGE(TAG, "%s, %d: freq=%d.%d", | ||||||
|  |                 log->message, log->datum, | ||||||
|  |                 log->freq / 1000000, (log->freq % 1000000) / 100000 | ||||||
|  |             ); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case EV_JOINED: | ||||||
|  |             printEvtJoined(log); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         case EV_JOIN_FAILED: | ||||||
|  |             printEvtJoinFailed(log); | ||||||
|  |             break; | ||||||
|  |  | ||||||
|  |         default: | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void printEvtJoined(TTNLogMessage* log) | ||||||
|  | { | ||||||
|  |     ESP_LOGI(TAG, "%s: ch=%d", log->message, (unsigned)log->txChnl); | ||||||
|  |  | ||||||
|  |     u4_t netid = 0; | ||||||
|  |     devaddr_t devaddr = 0; | ||||||
|  |     u1_t nwkKey[16]; | ||||||
|  |     u1_t artKey[16]; | ||||||
|  |     LMIC_getSessionKeys(&netid, &devaddr, nwkKey, artKey); | ||||||
|  |  | ||||||
|  |     ESP_LOGI(TAG, "netid: %d", netid); | ||||||
|  |  | ||||||
|  |     ESP_LOGI(TAG, "devaddr: %08x", devaddr); | ||||||
|  |  | ||||||
|  |     char hexBuf[48]; | ||||||
|  |     bin2hex((uint8_t*)&artKey, sizeof(artKey), hexBuf, '-'); | ||||||
|  |     ESP_LOGI(TAG, "artKey: %s", hexBuf); | ||||||
|  |  | ||||||
|  |     bin2hex((uint8_t*)&nwkKey, sizeof(nwkKey), hexBuf, '-'); | ||||||
|  |     ESP_LOGI(TAG, "nwkKey: %s", hexBuf); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void printEvtJoinFailed(TTNLogMessage* log) | ||||||
|  | { | ||||||
|  |     rps_t rps = log->rps; | ||||||
|  |     ESP_LOGE(TAG, "%s: freq=%d.%d, opmode=0x%x, rps=0x%02x (%s, %s, %s, %s, IH=%d)", | ||||||
|  |         log->message, | ||||||
|  |         log->freq / 1000000, (log->freq % 1000000) / 100000, | ||||||
|  |         log->opmode, | ||||||
|  |         rps, | ||||||
|  |         SF_NAMES[getSf(rps)], | ||||||
|  |         BW_NAMES[getBw(rps)], | ||||||
|  |         CR_NAMES[getCr(rps)], | ||||||
|  |         CRC_NAMES[getNocrc(rps)], | ||||||
|  |         getIh(rps) | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | static const char* HEX_DIGITS = "0123456789ABCDEF"; | ||||||
|  |  | ||||||
|  | void bin2hex(const uint8_t* bin, unsigned len, char* buf, char sep) | ||||||
|  | { | ||||||
|  |     int tgt = 0; | ||||||
|  |     for (int i = 0; i < len; i++) { | ||||||
|  |         if (sep != 0 && i != 0) | ||||||
|  |             buf[tgt++] = sep; | ||||||
|  |         buf[tgt++] = HEX_DIGITS[bin[i] >> 4]; | ||||||
|  |         buf[tgt++] = HEX_DIGITS[bin[i] & 0xf]; | ||||||
|  |     } | ||||||
|  |     buf[tgt] = 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ | |||||||
|  |  | ||||||
| class TTNLogging { | class TTNLogging { | ||||||
| public: | public: | ||||||
|     static void initInstance(); |     static TTNLogging* initInstance(); | ||||||
|  |  | ||||||
|     void init(); |     void init(); | ||||||
|     void logEvent(int event, const char* message, uint32_t datum); |     void logEvent(int event, const char* message, uint32_t datum); | ||||||
|  | |||||||
| @ -51,6 +51,9 @@ static TheThingsNetwork* ttnInstance; | |||||||
| static QueueHandle_t resultQueue; | static QueueHandle_t resultQueue; | ||||||
| static TTNClientAction clientAction = eActionUnrelated; | static TTNClientAction clientAction = eActionUnrelated; | ||||||
| static TTNProvisioning provisioning; | static TTNProvisioning provisioning; | ||||||
|  | #if LMIC_ENABLE_event_logging | ||||||
|  | static TTNLogging* logging; | ||||||
|  | #endif | ||||||
|  |  | ||||||
| static void eventCallback(void* userData, ev_t event); | static void eventCallback(void* userData, ev_t event); | ||||||
| static void messageReceivedCallback(void *userData, uint8_t port, const uint8_t *message, size_t messageSize); | static void messageReceivedCallback(void *userData, uint8_t port, const uint8_t *message, size_t messageSize); | ||||||
| @ -81,7 +84,7 @@ void TheThingsNetwork::configurePins(spi_host_device_t spi_host, uint8_t nss, ui | |||||||
|     ttn_hal.configurePins(spi_host, nss, rxtx, rst, dio0, dio1); |     ttn_hal.configurePins(spi_host, nss, rxtx, rst, dio0, dio1); | ||||||
|  |  | ||||||
| #if LMIC_ENABLE_event_logging | #if LMIC_ENABLE_event_logging | ||||||
|     TTNLogging::initInstance(); |     logging = TTNLogging::initInstance(); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     LMIC_registerEventCb(eventCallback, nullptr); |     LMIC_registerEventCb(eventCallback, nullptr); | ||||||
| @ -252,17 +255,19 @@ void TheThingsNetwork::setRSSICal(int8_t rssiCal) | |||||||
|  |  | ||||||
| // --- Callbacks --- | // --- Callbacks --- | ||||||
|  |  | ||||||
| #if CONFIG_LOG_DEFAULT_LEVEL >= 3 | #if CONFIG_LOG_DEFAULT_LEVEL >= 3 || LMIC_ENABLE_event_logging | ||||||
| static const char *eventNames[] = { LMIC_EVENT_NAME_TABLE__INIT }; | const char *eventNames[] = { LMIC_EVENT_NAME_TABLE__INIT }; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void eventCallback(void* userData, ev_t event) | void eventCallback(void* userData, ev_t event) | ||||||
| { | { | ||||||
|     #if CONFIG_LOG_DEFAULT_LEVEL >= 3 | #if LMIC_ENABLE_event_logging | ||||||
|  |     logging->logEvent(event, eventNames[event], 0); | ||||||
|  | #elif CONFIG_LOG_DEFAULT_LEVEL >= 3 | ||||||
|     ESP_LOGI(TAG, "event %s", eventNames[event]); |     ESP_LOGI(TAG, "event %s", eventNames[event]); | ||||||
|     #endif | #endif | ||||||
|  |  | ||||||
|     if (event == EV_TXCOMPLETE) { |     if (event == EV_TXCOMPLETE) { | ||||||
|         if (LMIC.txrxFlags & TXRX_ACK) |         if (LMIC.txrxFlags & TXRX_ACK) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user