|  | 
| 11 | 11 |  * | 
| 12 | 12 |  */ | 
| 13 | 13 | 
 | 
|  | 14 | +#include <avr/pgmspace.h> | 
|  | 15 | + | 
| 14 | 16 | #include "n_lib.h" | 
| 15 | 17 | 
 | 
| 16 |  | -const char *c_null = "null"; | 
| 17 |  | -const char *c_false = "false"; | 
| 18 |  | -const char *c_true = "true"; | 
| 19 |  | -const char *c_nullstring = ""; | 
| 20 |  | -const char *c_newline = "\r\n"; | 
| 21 |  | -const char *c_mem = "mem"; | 
| 22 |  | -const char *c_iotimeout = "timeout {io}"; | 
| 23 |  | -const char *c_err = "err"; | 
| 24 |  | -const char *c_req = "req"; | 
| 25 |  | -const char *c_cmd = "cmd"; | 
| 26 |  | -const char *c_bad = "bad"; | 
| 27 |  | -const char *c_iobad = "bad {io}"; | 
| 28 |  | -const char *c_ioerr = "{io}"; | 
|  | 18 | +const char c_agent[] PROGMEM = "agent"; | 
|  | 19 | +const char c_align[] PROGMEM = "align"; | 
|  | 20 | +const char c_arch_arc32[] PROGMEM = "arc32"; | 
|  | 21 | +const char c_arch_avr[] PROGMEM = "avr"; | 
|  | 22 | +const char c_arch_esp32[] PROGMEM = "esp32"; | 
|  | 23 | +const char c_arch_esp8266[] PROGMEM = "esp8266"; | 
|  | 24 | +const char c_arch_megaavr[] PROGMEM = "megaavr"; | 
|  | 25 | +const char c_arch_nrf52840[] PROGMEM = "nrf52840"; | 
|  | 26 | +const char c_arch_nrf52[] PROGMEM = "nrf52"; | 
|  | 27 | +const char c_arch_nrf51[] PROGMEM = "nrf51"; | 
|  | 28 | +const char c_arch_pic32[] PROGMEM = "pic32"; | 
|  | 29 | +const char c_arch_sam[] PROGMEM = "sam"; | 
|  | 30 | +const char c_arch_samd[] PROGMEM = "samd"; | 
|  | 31 | +const char c_arch_spresence[] PROGMEM = "spresence"; | 
|  | 32 | +const char c_arch_stm32[] PROGMEM = "stm32"; | 
|  | 33 | +const char c_arch_stm32f0[] PROGMEM = "stm32f0"; | 
|  | 34 | +const char c_arch_stm32f1[] PROGMEM = "stm32f1"; | 
|  | 35 | +const char c_arch_stm32f4[] PROGMEM = "stm32f4"; | 
|  | 36 | +const char c_arch_stm32g0[] PROGMEM = "stm32g0"; | 
|  | 37 | +const char c_arch_stm32l4[] PROGMEM = "stm32l4"; | 
|  | 38 | +const char c_arch_stm32u5[] PROGMEM = "stm32u5"; | 
|  | 39 | +const char c_area[] PROGMEM = "area"; | 
|  | 40 | +const char c_array[] PROGMEM = "array"; | 
|  | 41 | +const char c_asterisk[] PROGMEM = "*"; | 
|  | 42 | +const char c_bad[] PROGMEM = "bad"; | 
|  | 43 | +const char c_bearing[] PROGMEM = "bearing"; | 
|  | 44 | +const char c_began_loc_dop[] PROGMEM = "began_loc_dop"; | 
|  | 45 | +const char c_began_loc_lat[] PROGMEM = "began_loc_lat"; | 
|  | 46 | +const char c_began_loc_lon[] PROGMEM = "began_loc_lon"; | 
|  | 47 | +const char c_began_loc_when[] PROGMEM = "began_loc_when"; | 
|  | 48 | +const char c_began_motion_when[] PROGMEM = "began_motion_when"; | 
|  | 49 | +const char c_began_when[] PROGMEM = "began_when"; | 
|  | 50 | +const char c_body[] PROGMEM = "body"; | 
|  | 51 | +const char c_bool[] PROGMEM = "bool"; | 
|  | 52 | +const char c_card_attn[] PROGMEM = "card.attn"; | 
|  | 53 | +const char c_card_contact[] PROGMEM = "card.contact"; | 
|  | 54 | +const char c_card_location[] PROGMEM = "card.location"; | 
|  | 55 | +const char c_card_location_mode[] PROGMEM = "card.location.mode"; | 
|  | 56 | +const char c_card_log[] PROGMEM = "card.log"; | 
|  | 57 | +const char c_card_restore[] PROGMEM = "card.restore"; | 
|  | 58 | +const char c_card_status[] PROGMEM = "card.status"; | 
|  | 59 | +const char c_card_temp[] PROGMEM = "card.temp"; | 
|  | 60 | +const char c_card_time[] PROGMEM = "card.time"; | 
|  | 61 | +const char c_card_version[] PROGMEM = "card.version"; | 
|  | 62 | +const char c_card_voltage[] PROGMEM = "card.voltage"; | 
|  | 63 | +const char c_charging[] PROGMEM = "charging"; | 
|  | 64 | +const char c_cmd[] PROGMEM = "cmd"; | 
|  | 65 | +const char c_colon[] PROGMEM = ":"; | 
|  | 66 | +const char c_compiler[] PROGMEM = "compiler"; | 
|  | 67 | +const char c_comma[] PROGMEM = ","; | 
|  | 68 | +const char c_connected[] PROGMEM = "connected"; | 
|  | 69 | +const char c_country[] PROGMEM = "country"; | 
|  | 70 | +const char c_cpu_cores[] PROGMEM = "cpu_cores"; | 
|  | 71 | +const char c_cpu_mem[] PROGMEM = "cpu_mem"; | 
|  | 72 | +const char c_cpu_mhz[] PROGMEM = "cpu_mhz"; | 
|  | 73 | +const char c_cpu_name[] PROGMEM = "cpu_name"; | 
|  | 74 | +const char c_cpu_vendor[] PROGMEM = "cpu_vendor"; | 
|  | 75 | +const char c_curly_brace_close[] PROGMEM = "}"; | 
|  | 76 | +const char c_curly_brace_open[] PROGMEM = "{"; | 
|  | 77 | +const char c_dbg_msg_about_to_sleep[] PROGMEM = "ABOUT TO SLEEP\n"; | 
|  | 78 | +const char c_dbg_msg_awakened_successfully[] PROGMEM = "AWAKENED SUCCESSFULLY\n"; | 
|  | 79 | +const char c_dbg_msg_cannot_convert_to_json[] PROGMEM = "can't convert to JSON"; | 
|  | 80 | +const char c_dbg_msg_card_restored[] PROGMEM = "CARD RESTORED\n"; | 
|  | 81 | +const char c_dbg_msg_did_not_sleep[] PROGMEM = "DIDN'T SLEEP\n"; | 
|  | 82 | +const char c_dbg_msg_i2c_not_active[] PROGMEM = "i2c not active"; | 
|  | 83 | +const char c_dbg_msg_i2c_or_serial_interface_must_be_selected[] PROGMEM = "i2c or serial interface must be selected"; | 
|  | 84 | +const char c_dbg_msg_i2c_receive_error[] PROGMEM = "i2c receive error\n"; | 
|  | 85 | +const char c_dbg_msg_i2c_transmit[] PROGMEM = "i2c transmit"; | 
|  | 86 | +const char c_dbg_msg_insufficient_memory[] PROGMEM = "insufficient memory"; | 
|  | 87 | +const char c_dbg_msg_invalid_data_received_on_serial_port_from_notecard[] PROGMEM = "invalid data received on serial port from notecard\n"; | 
|  | 88 | +const char c_dbg_msg_invalid_json[] PROGMEM = "invalid JSON: "; | 
|  | 89 | +const char c_dbg_msg_io_bad[] PROGMEM = "bad {io}"; | 
|  | 90 | +const char c_dbg_msg_io_err[] PROGMEM = "{io}"; | 
|  | 91 | +const char c_dbg_msg_io_serial_communications_error[] PROGMEM = "serial communications error {io}"; | 
|  | 92 | +const char c_dbg_msg_io_timeout[] PROGMEM = "timeout {io}"; | 
|  | 93 | +const char c_dbg_msg_io_transaction_incomplete[] PROGMEM = "transaction incomplete {io}"; | 
|  | 94 | +const char c_dbg_msg_io_transaction_timeout[] PROGMEM = "transaction timeout {io}"; | 
|  | 95 | +const char c_dbg_msg_io_unrecognized_response_from_card[] PROGMEM = "unrecognized response from card {io}"; | 
|  | 96 | +const char c_dbg_msg_no_notecard[] PROGMEM = "no notecard\n"; | 
|  | 97 | +const char c_dbg_msg_notecard_not_responding[] PROGMEM = "notecard not responding\n"; | 
|  | 98 | +const char c_dbg_msg_received_only_partial_reply_after_timeout[] PROGMEM = "received only partial reply after timeout:\n"; | 
|  | 99 | +const char c_dbg_msg_reply_to_request_did_not_arrive_from_module_in_time[] PROGMEM = "reply to request didn't arrive from module in time\n"; | 
|  | 100 | +const char c_dbg_msg_request_or_response_was_lost[] PROGMEM = "request or response was lost {io}"; | 
|  | 101 | +const char c_dbg_msg_requesting_sleep[] PROGMEM = "requesting sleep\n"; | 
|  | 102 | +const char c_dbg_msg_transaction_jsonbuf_malloc_failed[] PROGMEM = "transaction: jsonbuf malloc failed\n"; | 
|  | 103 | +const char c_dbg_msg_unrecognized_data_from_notecard[] PROGMEM = "unrecognized data from notecard\n"; | 
|  | 104 | +const char c_delete[] PROGMEM = "delete"; | 
|  | 105 | +const char c_device[] PROGMEM = "device"; | 
|  | 106 | +const char c_distance[] PROGMEM = "distance"; | 
|  | 107 | +const char c_dop[] PROGMEM = "dop"; | 
|  | 108 | +const char c_edge_notefile[] PROGMEM = "_edge.qi"; | 
|  | 109 | +const char c_email[] PROGMEM = "email"; | 
|  | 110 | +const char c_ended_loc_dop[] PROGMEM = "ended_loc_dop"; | 
|  | 111 | +const char c_ended_loc_lat[] PROGMEM = "ended_loc_lat"; | 
|  | 112 | +const char c_ended_loc_lon[] PROGMEM = "ended_loc_lon"; | 
|  | 113 | +const char c_ended_loc_when[] PROGMEM = "ended_loc_when"; | 
|  | 114 | +const char c_ended_motion_when[] PROGMEM = "ended_motion_when"; | 
|  | 115 | +const char c_ended_when[] PROGMEM = "ended_when"; | 
|  | 116 | +const char c_env_default[] PROGMEM = "env.default"; | 
|  | 117 | +const char c_env_get[] PROGMEM = "env.get"; | 
|  | 118 | +const char c_err[] PROGMEM = "err"; | 
|  | 119 | +const char c_FAIL[] PROGMEM = "FAIL"; | 
|  | 120 | +const char c_false[] PROGMEM = "false"; | 
|  | 121 | +const char c_file[] PROGMEM = "file"; | 
|  | 122 | +const char c_fixed[] PROGMEM = "fixed"; | 
|  | 123 | +const char c_fmt_1_15g[] PROGMEM = "%1.15g"; | 
|  | 124 | +const char c_fmt_1_17g[] PROGMEM = "%1.17g"; | 
|  | 125 | +const char c_fmt_lg[] PROGMEM = "%lg"; | 
|  | 126 | +const char c_free[] PROGMEM = "free"; | 
|  | 127 | +const char c_heartbeat[] PROGMEM = "heartbeat"; | 
|  | 128 | +const char c_HEX[] PROGMEM = "0123456789ABCDEF"; | 
|  | 129 | +const char c_hex[] PROGMEM = "0123456789abcdef"; | 
|  | 130 | +const char c_host[] PROGMEM = "host"; | 
|  | 131 | +const char c_hub_get[] PROGMEM = "hub.get"; | 
|  | 132 | +const char c_hub_set[] PROGMEM = "hub.set"; | 
|  | 133 | +const char c_hub_status[] PROGMEM = "hub.status"; | 
|  | 134 | +const char c_humidity[] PROGMEM = "humidity"; | 
|  | 135 | +const char c_hyphen[] PROGMEM = "-"; | 
|  | 136 | +const char c_i2c[] PROGMEM = "i2c"; | 
|  | 137 | +const char c_inbound[] PROGMEM = "inbound"; | 
|  | 138 | +const char c_INF[] PROGMEM = "INF"; | 
|  | 139 | +const char c_inf[] PROGMEM = "inf"; | 
|  | 140 | +const char c_invalid[] PROGMEM = "invalid"; | 
|  | 141 | +const char c_jcount[] PROGMEM = "jcount"; | 
|  | 142 | +const char c_journey[] PROGMEM = "journey"; | 
|  | 143 | +const char c_lat[] PROGMEM = "lat"; | 
|  | 144 | +const char c_level[] PROGMEM = "level"; | 
|  | 145 | +const char c_loc_lat[] PROGMEM = "loc_lat"; | 
|  | 146 | +const char c_loc_lon[] PROGMEM = "loc_lon"; | 
|  | 147 | +const char c_lon[] PROGMEM = "lon"; | 
|  | 148 | +const char c_malloc[] PROGMEM = "malloc"; | 
|  | 149 | +const char c_mem[] PROGMEM = "mem"; | 
|  | 150 | +const char c_meters[] PROGMEM = "meters"; | 
|  | 151 | +const char c_minutes[] PROGMEM = "minutes"; | 
|  | 152 | +const char c_mode[] PROGMEM = "mode"; | 
|  | 153 | +const char c_motion[] PROGMEM = "motion"; | 
|  | 154 | +const char c_movements[] PROGMEM = "movements"; | 
|  | 155 | +const char c_mtime[] PROGMEM = "mtime"; | 
|  | 156 | +const char c_name[] PROGMEM = "name"; | 
|  | 157 | +const char c_NAN[] PROGMEM = "NAN"; | 
|  | 158 | +const char c_nan[] PROGMEM = "nan"; | 
|  | 159 | +const char c_newline[] PROGMEM = "\r\n"; | 
|  | 160 | +const char c_no_sat[] PROGMEM = "no-sat"; | 
|  | 161 | +const char c_note_add[] PROGMEM = "note.add"; | 
|  | 162 | +const char c_note_c[] PROGMEM = "note_c"; | 
|  | 163 | +const char c_note_event[] PROGMEM = "note.event"; | 
|  | 164 | +const char c_note_get[] PROGMEM = "note.get"; | 
|  | 165 | +const char c_note_template[] PROGMEM = "note.template"; | 
|  | 166 | +const char c_null[] PROGMEM = "null"; | 
|  | 167 | +const char c_null_paren[] PROGMEM = "(null)"; | 
|  | 168 | +const char c_nullstring[] PROGMEM = ""; | 
|  | 169 | +const char c_number[] PROGMEM = "number"; | 
|  | 170 | +const char c_object[] PROGMEM = "object"; | 
|  | 171 | +const char c_off[] PROGMEM = "off"; | 
|  | 172 | +const char c_org[] PROGMEM = "org"; | 
|  | 173 | +const char c_orientation[] PROGMEM = "orientation"; | 
|  | 174 | +const char c_os_family[] PROGMEM = "os_family"; | 
|  | 175 | +const char c_os_name[] PROGMEM = "os_name"; | 
|  | 176 | +const char c_os_platform[] PROGMEM = "os_platform"; | 
|  | 177 | +const char c_os_version[] PROGMEM = "os_version"; | 
|  | 178 | +const char c_outbound[] PROGMEM = "outbound"; | 
|  | 179 | +const char c_payload[] PROGMEM = "payload"; | 
|  | 180 | +const char c_point[] PROGMEM = "point"; | 
|  | 181 | +const char c_pressure[] PROGMEM = "pressure"; | 
|  | 182 | +const char c_product[] PROGMEM = "product"; | 
|  | 183 | +const char c_quotation_mark[] PROGMEM = "\""; | 
|  | 184 | +const char c_req[] PROGMEM = "req"; | 
|  | 185 | +const char c_req_interface[] PROGMEM = "req_interface"; | 
|  | 186 | +const char c_role[] PROGMEM = "role"; | 
|  | 187 | +const char c_route[] PROGMEM = "route"; | 
|  | 188 | +const char c_scan[] PROGMEM = "scan"; | 
|  | 189 | +const char c_scan_format_2g[] PROGMEM = "xmcc,xmnc,xlac,xcid,xrssi"; | 
|  | 190 | +const char c_scan_format_3g[] PROGMEM = "xmcc,xmnc,xlac,xcid,xpsc,xrscp"; | 
|  | 191 | +const char c_scan_format_4g[] PROGMEM = "xmcc,xmnc,xtac,xcid,xpci,rssi,rsrp,rsrq,xband,xchan"; | 
|  | 192 | +const char c_scan_format_5g[] PROGMEM = "xmcc,xmnc,xtac,xcid,xpci,rssi,rsrp,rsrq,xband,xchan"; | 
|  | 193 | +const char c_scan_format_gps[] PROGMEM = "epochsecs,olc,hdop"; | 
|  | 194 | +const char c_scan_format_time[] PROGMEM = "epochsecs"; | 
|  | 195 | +const char c_scan_format_wifi[] PROGMEM = "xbssid,xchannel,xfreq,rssi,snr,\"ssid\""; | 
|  | 196 | +const char c_seconds[] PROGMEM = "seconds"; | 
|  | 197 | +const char c_secs[] PROGMEM = "secs"; | 
|  | 198 | +const char c_serial[] PROGMEM = "serial"; | 
|  | 199 | +const char c_signals[] PROGMEM = "signals"; | 
|  | 200 | +const char c_sleep[] PROGMEM = "sleep"; | 
|  | 201 | +const char c_sn[] PROGMEM = "sn"; | 
|  | 202 | +const char c_space[] PROGMEM = " "; | 
|  | 203 | +const char c_start[] PROGMEM = "start"; | 
|  | 204 | +const char c_status[] PROGMEM = "status"; | 
|  | 205 | +const char c_string[] PROGMEM = "string"; | 
|  | 206 | +const char c_subsystem[] PROGMEM = "subsystem"; | 
|  | 207 | +const char c_sync[] PROGMEM = "sync"; | 
|  | 208 | +const char c_synclog_notefile[] PROGMEM = "_synclog.qi"; | 
|  | 209 | +const char c_temperature[] PROGMEM = "temperature"; | 
|  | 210 | +const char c_text[] PROGMEM = "text"; | 
|  | 211 | +const char c_time[] PROGMEM = "time"; | 
|  | 212 | +const char c_track[] PROGMEM = "track"; | 
|  | 213 | +const char c_true[] PROGMEM = "true"; | 
|  | 214 | +const char c_type[] PROGMEM = "type"; | 
|  | 215 | +const char c_unknown[] PROGMEM = "unknown"; | 
|  | 216 | +const char c_usb[] PROGMEM = "usb"; | 
|  | 217 | +const char c_UTC[] PROGMEM = "UTC"; | 
|  | 218 | +const char c_utf8_bom[] PROGMEM = "\xEF\xBB\xBF"; | 
|  | 219 | +const char c_value[] PROGMEM = "value"; | 
|  | 220 | +const char c_velocity[] PROGMEM = "velocity"; | 
|  | 221 | +const char c_version[] PROGMEM = "version"; | 
|  | 222 | +const char c_voltage[] PROGMEM = "voltage"; | 
|  | 223 | +const char c_web_dot[] PROGMEM = "web."; | 
|  | 224 | +const char c_zone[] PROGMEM = "zone"; | 
0 commit comments