|
| 1 | +/*! |
| 2 | + * @file n_ua.c |
| 3 | + * |
| 4 | + * Written by Ray Ozzie and Blues Inc. team. |
| 5 | + * |
| 6 | + * Copyright (c) 2019 Blues Inc. MIT License. Use of this source code is |
| 7 | + * governed by licenses granted by the copyright holder including that found in |
| 8 | + * the |
| 9 | + * <a href="https://github.com/blues/note-c/blob/master/LICENSE">LICENSE</a> |
| 10 | + * file. |
| 11 | + * |
| 12 | + */ |
| 13 | + |
| 14 | +#ifndef NOTE_LOWMEM |
| 15 | + |
| 16 | +#include "n_lib.h" |
| 17 | + |
| 18 | +// Override-able statics |
| 19 | +static char *n_agent = "note-c"; |
| 20 | +static char *n_os_name = NULL; |
| 21 | +static char *n_os_platform = NULL; |
| 22 | +static char *n_os_family = NULL; |
| 23 | +static char *n_os_version = NULL; |
| 24 | +static int n_cpu_mem = 0; |
| 25 | +static int n_cpu_mhz = 0; |
| 26 | +static int n_cpu_cores = 0; |
| 27 | +static char *n_cpu_vendor = NULL; |
| 28 | +static char *n_cpu_name = NULL; |
| 29 | + |
| 30 | +/**************************************************************************/ |
| 31 | +/*! |
| 32 | + @brief Method to return user agent object |
| 33 | + @returns a `J` cJSON object with the user agent object. |
| 34 | +*/ |
| 35 | +/**************************************************************************/ |
| 36 | +J *noteUserAgent() |
| 37 | +{ |
| 38 | + |
| 39 | + J *ua = JCreateObject(); |
| 40 | + if (ua == NULL) { |
| 41 | + return ua; |
| 42 | + } |
| 43 | + |
| 44 | +#if defined(__cplusplus) |
| 45 | +#define PLUS " c++" |
| 46 | +#else |
| 47 | +#define PLUS "" |
| 48 | +#endif |
| 49 | + |
| 50 | +#if defined(__ICCARM__) |
| 51 | + char *compiler = "iar arm" PLUS " " __VER__; |
| 52 | +#elif defined(__IAR_SYSTEMS_ICC__) |
| 53 | + char *compiler = "iar" PLUS " " __VER__; |
| 54 | +#elif defined(__clang__) |
| 55 | + char *compiler = "clang" PLUS " " __VERSION__; |
| 56 | +#elif defined(__GNUC__) |
| 57 | + char *compiler = "gcc" PLUS " " __VERSION__; |
| 58 | +#elif defined(__ATOLLIC__) && defined(__GNUC__) |
| 59 | + char *compiler = "atollic gcc" PLUS " " __VERSION__; |
| 60 | +#elif defined(_MSC_FULL_VER) |
| 61 | + char *compiler = "msc" PLUS " " _MSC_FULL_VER; |
| 62 | +#elif defined(__STDC_VERSION___) |
| 63 | + char *compiler = "STDC" PLUS " " __STDC_VERSION__; |
| 64 | +#else |
| 65 | + char *compiler = "unknown" PLUS " " __VERSION__ |
| 66 | +#endif |
| 67 | + |
| 68 | +#if defined(ARDUINO_ARCH_ARC32) |
| 69 | + char *arch = "arc32"; |
| 70 | +#elif defined(ARDUINO_ARCH_AVR) |
| 71 | + char *arch = "avr"; |
| 72 | +#elif defined(ARDUINO_ARCH_ESP32) |
| 73 | + char *arch = "esp32"; |
| 74 | +#elif defined(ARDUINO_ARCH_ESP8266) |
| 75 | + char *arch = "esp8266"; |
| 76 | +#elif defined(ARDUINO_ARCH_MBED) |
| 77 | + char *arch = "mbed"; |
| 78 | +#elif defined(ARDUINO_ARCH_MEGAAVR) |
| 79 | + char *arch = "megaavr"; |
| 80 | +#elif defined(ARDUINO_ARCH_NRF52840) |
| 81 | + char *arch = "nrf52840"; |
| 82 | +#elif defined(ARDUINO_ARCH_NRF52) |
| 83 | + char *arch = "nrf52"; |
| 84 | +#elif defined(ARDUINO_ARCH_NRF51) |
| 85 | + char *arch = "nrf51"; |
| 86 | +#elif defined(ARDUINO_ARCH_PIC32) |
| 87 | + char *arch = "pic32"; |
| 88 | +#elif defined(ARDUINO_ARCH_SAMD) |
| 89 | + char *arch = "samd"; |
| 90 | +#elif defined(ARDUINO_ARCH_SAM) |
| 91 | + char *arch = "sam"; |
| 92 | +#elif defined(ARDUINO_ARCH_SPRESENSE) |
| 93 | + char *arch = "spresence"; |
| 94 | +#elif defined(ARDUINO_ARCH_STM32F0) |
| 95 | + char *arch = "stm32f0"; |
| 96 | +#elif defined(ARDUINO_ARCH_STM32F1) |
| 97 | + char *arch = "stm32f1"; |
| 98 | +#elif defined(ARDUINO_ARCH_STM32F4) |
| 99 | + char *arch = "stm32f4"; |
| 100 | +#elif defined(ARDUINO_ARCH_STM32G0) |
| 101 | + char *arch = "stm32g0"; |
| 102 | +#elif defined(ARDUINO_ARCH_STM32L4) |
| 103 | + char *arch = "stm32f4"; |
| 104 | +#elif defined(ARDUINO_ARCH_STM32U5) |
| 105 | + char *arch = "stm32u5"; |
| 106 | +#elif defined(ARDUINO_ARCH_STM32) |
| 107 | + char *arch = "stm32"; |
| 108 | +#else |
| 109 | + char *arch = ""; |
| 110 | +#endif |
| 111 | + |
| 112 | + JAddStringToObject(ua, "agent", n_agent); |
| 113 | + JAddStringToObject(ua, "compiler", compiler); |
| 114 | + JAddStringToObject(ua, "req_interface", NoteActiveInterface()); |
| 115 | + |
| 116 | + if (n_cpu_mem != 0) { |
| 117 | + JAddNumberToObject(ua, "cpu_mem", n_cpu_mem); |
| 118 | + } |
| 119 | + if (n_cpu_mhz != 0) { |
| 120 | + JAddNumberToObject(ua, "cpu_mhz", n_cpu_mhz); |
| 121 | + } |
| 122 | + if (n_cpu_cores != 0) { |
| 123 | + JAddNumberToObject(ua, "cpu_cores", n_cpu_cores); |
| 124 | + } |
| 125 | + if (n_cpu_vendor != NULL) { |
| 126 | + JAddStringToObject(ua, "cpu_vendor", n_cpu_vendor); |
| 127 | + } |
| 128 | + if (n_cpu_name != NULL) { |
| 129 | + JAddStringToObject(ua, "cpu_name", n_cpu_name); |
| 130 | + } |
| 131 | + |
| 132 | + if (n_os_name != NULL) { |
| 133 | + JAddStringToObject(ua, "os_name", n_os_name); |
| 134 | + } |
| 135 | + if (n_os_platform != NULL) { |
| 136 | + JAddStringToObject(ua, "os_platform", n_os_platform); |
| 137 | + } |
| 138 | + if (n_os_family != NULL) { |
| 139 | + JAddStringToObject(ua, "os_family", n_os_family); |
| 140 | + } |
| 141 | + if (n_os_version != NULL) { |
| 142 | + JAddStringToObject(ua, "os_version", n_os_version); |
| 143 | + } |
| 144 | + |
| 145 | + return ua; |
| 146 | + |
| 147 | +} |
| 148 | + |
| 149 | +/**************************************************************************/ |
| 150 | +/*! |
| 151 | + @brief Set key UA fields from a higher level library context |
| 152 | +*/ |
| 153 | +/**************************************************************************/ |
| 154 | +void NoteSetUserAgent(char *agent) |
| 155 | +{ |
| 156 | + n_agent = agent; |
| 157 | +} |
| 158 | + |
| 159 | +/**************************************************************************/ |
| 160 | +/*! |
| 161 | + @brief Set key UA fields from a higher level library context |
| 162 | +*/ |
| 163 | +/**************************************************************************/ |
| 164 | +void NoteSetUserAgentOS(char *os_name, char *os_platform, char *os_family, char *os_version) |
| 165 | +{ |
| 166 | + n_os_name = os_name; |
| 167 | + n_os_platform = os_platform; |
| 168 | + n_os_family = os_family; |
| 169 | + n_os_version = os_version; |
| 170 | +} |
| 171 | + |
| 172 | +/**************************************************************************/ |
| 173 | +/*! |
| 174 | + @brief Set key UA fields from a higher level library context |
| 175 | +*/ |
| 176 | +/**************************************************************************/ |
| 177 | +void NoteSetUserAgentCPU(int cpu_mem, int cpu_mhz, int cpu_cores, char *cpu_vendor, char *cpu_name) |
| 178 | +{ |
| 179 | + n_cpu_mem = cpu_mem; |
| 180 | + n_cpu_mhz = cpu_mhz; |
| 181 | + n_cpu_cores = cpu_cores; |
| 182 | + n_cpu_vendor = cpu_vendor; |
| 183 | + n_cpu_name = cpu_name; |
| 184 | +} |
| 185 | + |
| 186 | +#endif |
0 commit comments