cryptnox-pos 1.0.0
Standalone USDC payment terminal firmware (ESP32 + Cryptnox smart card)
Loading...
Searching...
No Matches
settings.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: LGPL-3.0-or-later
3 * Copyright (c) 2026 Cryptnox SA
4 */
5
14
15#ifndef SETTINGS_H
16#define SETTINGS_H
17
18#include <stdint.h>
19#include <stdbool.h>
20#include <stddef.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
45
46/* Family/network predicates for each selection live in assets.h. */
47
60#define POS_AMOUNT_UNITS_MAX_NATIVE 18446744ULL
61
64
67
77bool settings_get_mainnet(void);
78
80void settings_set_mainnet(bool mainnet);
81
88const char *settings_net_str(const char *testnet, const char *mainnet);
89
91#define TZ_OFFSET_MIN (-720)
92#define TZ_OFFSET_MAX (840)
93
102int16_t settings_get_tz_offset_min(void);
103
111bool settings_set_tz_offset_min(int16_t minutes);
112
114uint8_t settings_get_tz_dst(void);
115
117bool settings_set_tz_dst(uint8_t rule);
118
120uint8_t settings_get_brightness(void);
121
123void settings_set_brightness(uint8_t pct);
124
131void settings_get_touch_cal(uint16_t *x_min, uint16_t *x_max,
132 uint16_t *y_min, uint16_t *y_max);
133
137void settings_set_touch_cal(uint16_t x_min, uint16_t x_max,
138 uint16_t y_min, uint16_t y_max);
139
141bool settings_has_wifi(void);
142
153bool settings_get_wifi(char *ssid, size_t ssid_n, char *pass, size_t pass_n);
154
156void settings_set_wifi(const char *ssid, const char *pass);
157
165bool settings_has_admin_code(void);
166
177bool settings_set_admin_code(const char *code);
178
186bool settings_check_admin_code(const char *code);
187
193uint8_t settings_admin_fail_count(void);
194
199uint32_t settings_get_max_fee_gwei(void);
200
205uint32_t settings_get_priority_fee_gwei(void);
206
211bool settings_set_fees_gwei(uint32_t max_gwei, uint32_t prio_gwei);
212
214#define SETTINGS_PAYOUT_MAX 64U
215
235bool settings_get_payout(bool tron, char *out, size_t n);
236
244bool settings_has_payout(bool tron);
245
257bool settings_set_payout(bool tron, const char *addr);
258
278bool settings_get_contract(pos_chain_t chain, char *out, size_t n);
279
286bool settings_set_contract(pos_chain_t chain, const char *addr);
287
289void settings_factory_reset(void);
290
302bool settings_inflight_save(const void *rec, size_t n);
303
305bool settings_inflight_load(void *rec, size_t n);
306
308void settings_inflight_clear(void);
309
310/*
311 * BUILD_ID is set by the build to `git rev-list --count --first-parent HEAD`
312 * (project CMakeLists.txt), so every commit gets a new one. A plain counter
313 * survives every route onto a unit (browser update, `idf.py flash`, factory
314 * image). See @ref settings_wipe_if_new_build.
315 */
316
340
341#ifdef __cplusplus
342}
343#endif
344
345#endif /* SETTINGS_H */
bool settings_check_admin_code(const char *code)
Check a candidate code, maintaining the failure counter.
Definition settings.cpp:414
bool settings_has_wifi(void)
true if a Wi-Fi SSID has been stored.
Definition settings.cpp:284
bool settings_get_wifi(char *ssid, size_t ssid_n, char *pass, size_t pass_n)
Read the stored Wi-Fi credentials.
Definition settings.cpp:298
bool settings_set_tz_offset_min(int16_t minutes)
Store the panel clock's UTC offset.
Definition settings.cpp:234
bool settings_wipe_if_new_build(void)
Erase NVS unless this exact build is the one that wrote it.
Definition settings.cpp:578
const char * settings_net_str(const char *testnet, const char *mainnet)
Pick the string belonging to the network the terminal is on.
Definition settings.cpp:210
pos_chain_t settings_get_chain(void)
Selected chain, or POS_CHAIN_ETH_USDC if never set.
Definition settings.cpp:165
bool settings_get_contract(pos_chain_t chain, char *out, size_t n)
Read the token-contract address for a network.
Definition settings.cpp:549
int16_t settings_get_tz_offset_min(void)
The panel clock's standard (winter) offset from UTC, in minutes east.
Definition settings.cpp:226
uint8_t settings_get_tz_dst(void)
The clock's DST rule, a civil_dst_t; CIVIL_DST_NONE when unset.
Definition settings.cpp:243
uint32_t settings_get_priority_fee_gwei(void)
EIP-1559 max priority fee (tip) per gas, in Gwei.
Definition settings.cpp:352
bool settings_set_fees_gwei(uint32_t max_gwei, uint32_t prio_gwei)
Persist the max fee and the tip per gas (Gwei), as a pair.
Definition settings.cpp:357
void settings_set_wifi(const char *ssid, const char *pass)
Persist Wi-Fi credentials (plaintext — see README threat model).
Definition settings.cpp:324
bool settings_get_payout(bool tron, char *out, size_t n)
Read the payout address for a network.
Definition settings.cpp:525
bool settings_set_admin_code(const char *code)
Store a new admin code, with a fresh random salt.
Definition settings.cpp:385
uint8_t settings_get_brightness(void)
Backlight level in percent, or 80 if never set.
Definition settings.cpp:215
void settings_set_chain(pos_chain_t chain)
Persist the selected chain.
Definition settings.cpp:181
bool settings_inflight_load(void *rec, size_t n)
Read the persisted sale back. false if none, or not n bytes.
Definition settings.cpp:660
void settings_set_mainnet(bool mainnet)
Persist the production/test network choice.
Definition settings.cpp:201
bool settings_set_contract(pos_chain_t chain, const char *addr)
Persist a token-contract address, value and echo copy.
Definition settings.cpp:566
void settings_get_touch_cal(uint16_t *x_min, uint16_t *x_max, uint16_t *y_min, uint16_t *y_max)
Raw XPT2046 range that maps to the panel's four edges.
Definition settings.cpp:260
bool settings_set_payout(bool tron, const char *addr)
Persist a payout address, writing both the value and its echo copy.
Definition settings.cpp:542
pos_chain_t
Which chain (and therefore which asset) the terminal charges in.
Definition settings.h:33
@ POS_CHAIN_POLY_USDT
Definition settings.h:39
@ POS_CHAIN_POLY_USDC
Definition settings.h:38
@ POS_CHAIN_ETH_USDC
Definition settings.h:34
@ POS_CHAIN__COUNT
Definition settings.h:43
@ POS_CHAIN_TRON_USDT
Definition settings.h:36
@ POS_CHAIN_TRON_TRX
Definition settings.h:35
@ POS_CHAIN_POLY_NATIVE
Definition settings.h:42
@ POS_CHAIN_TRON_USDC
Definition settings.h:40
@ POS_CHAIN_ETH_NATIVE
Definition settings.h:41
@ POS_CHAIN_ETH_USDT
Definition settings.h:37
void settings_factory_reset(void)
Erase all stored settings (brightness, auto, Wi-Fi creds, fees).
Definition settings.cpp:619
uint8_t settings_admin_fail_count(void)
Consecutive failed unlock attempts, persisted.
Definition settings.cpp:448
bool settings_set_tz_dst(uint8_t rule)
Store the DST rule.
Definition settings.cpp:248
void settings_set_brightness(uint8_t pct)
Persist the backlight level (0..100).
Definition settings.cpp:220
bool settings_has_admin_code(void)
true once an admin code exists.
Definition settings.cpp:372
void settings_set_touch_cal(uint16_t x_min, uint16_t x_max, uint16_t y_min, uint16_t y_max)
Persist a calibration. Rejected (and ignored) if an axis is inverted or collapsed — a bad store here ...
Definition settings.cpp:270
bool settings_get_mainnet(void)
true when the terminal is on the production networks.
Definition settings.cpp:189
void settings_inflight_clear(void)
Drop the persisted sale. Writes nothing when there is none.
Definition settings.cpp:673
bool settings_has_payout(bool tron)
Whether an operator has actually set the payout address for a network.
Definition settings.cpp:534
uint32_t settings_get_max_fee_gwei(void)
EIP-1559 max fee per gas, in Gwei.
Definition settings.cpp:347
bool settings_inflight_save(const void *rec, size_t n)
Persist the sale between broadcast and verdict (opaque record).
Definition settings.cpp:645