mirror of
				https://github.com/manuelbl/ttn-esp32.git
				synced 2025-10-31 02:30:35 +01:00 
			
		
		
		
	More logging cases
This commit is contained in:
		| @ -43,10 +43,21 @@ struct TTNLogMessage { | ||||
|     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(); | ||||
|     return &ttnLog; | ||||
| } | ||||
|  | ||||
| void TTNLogging::init() | ||||
| @ -122,25 +133,99 @@ void TTNLogging::loggingTask(void* param) | ||||
|         if (log == nullptr) | ||||
|             continue; | ||||
|  | ||||
|         if (log->event == -1) | ||||
|         { | ||||
|             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 | ||||
|             ); | ||||
|         } | ||||
|         printMessage(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 | ||||
|  | ||||
| @ -22,7 +22,7 @@ | ||||
|  | ||||
| class TTNLogging { | ||||
| public: | ||||
|     static void initInstance(); | ||||
|     static TTNLogging* initInstance(); | ||||
|  | ||||
|     void init(); | ||||
|     void logEvent(int event, const char* message, uint32_t datum); | ||||
|  | ||||
| @ -51,6 +51,9 @@ static TheThingsNetwork* ttnInstance; | ||||
| static QueueHandle_t resultQueue; | ||||
| static TTNClientAction clientAction = eActionUnrelated; | ||||
| static TTNProvisioning provisioning; | ||||
| #if LMIC_ENABLE_event_logging | ||||
| static TTNLogging* logging; | ||||
| #endif | ||||
|  | ||||
| static void eventCallback(void* userData, ev_t event); | ||||
| 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); | ||||
|  | ||||
| #if LMIC_ENABLE_event_logging | ||||
|     TTNLogging::initInstance(); | ||||
|     logging = TTNLogging::initInstance(); | ||||
| #endif | ||||
|  | ||||
|     LMIC_registerEventCb(eventCallback, nullptr); | ||||
| @ -252,15 +255,17 @@ void TheThingsNetwork::setRSSICal(int8_t rssiCal) | ||||
|  | ||||
| // --- Callbacks --- | ||||
|  | ||||
| #if CONFIG_LOG_DEFAULT_LEVEL >= 3 | ||||
| static const char *eventNames[] = { LMIC_EVENT_NAME_TABLE__INIT }; | ||||
| #if CONFIG_LOG_DEFAULT_LEVEL >= 3 || LMIC_ENABLE_event_logging | ||||
| const char *eventNames[] = { LMIC_EVENT_NAME_TABLE__INIT }; | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  | ||||
| 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]); | ||||
| #endif | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user