style: apply ufbt formatting

Claude-Session: https://claude.ai/code/session_017aeoATqoJv92Xiq5vnqaN8
This commit is contained in:
Eric Betts
2026-08-25 18:53:11 -07:00
parent 78cb9e52fd
commit 2d23f39f5f
6 changed files with 48 additions and 24 deletions
+36 -11
View File
@@ -26,8 +26,8 @@ static const char* seader_reader_cfg_header = "Seader USB Reader";
static const uint32_t seader_reader_cfg_version = 1;
/* Grace SAM ATR used only if the live ATR was not captured. */
static const uint8_t SEADER_READER_FALLBACK_ATR[] = {
0x3b, 0x95, 0x96, 0x80, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13};
static const uint8_t SEADER_READER_FALLBACK_ATR[] =
{0x3b, 0x95, 0x96, 0x80, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13};
struct SeaderReader {
SeaderReaderConfig cfg;
@@ -72,7 +72,8 @@ void seader_reader_settings_load(Seader* seader) {
version != seader_reader_cfg_version)
break;
if(flipper_format_read_string(file, "Manufacturer", tmp)) {
strlcpy(seader->reader_manufacturer, furi_string_get_cstr(tmp), SEADER_READER_NAME_MAX);
strlcpy(
seader->reader_manufacturer, furi_string_get_cstr(tmp), SEADER_READER_NAME_MAX);
}
if(flipper_format_read_string(file, "Product", tmp)) {
strlcpy(seader->reader_product, furi_string_get_cstr(tmp), SEADER_READER_NAME_MAX);
@@ -96,8 +97,7 @@ void seader_reader_settings_save(Seader* seader) {
if(!flipper_format_write_header_cstr(
file, seader_reader_cfg_header, seader_reader_cfg_version))
break;
if(!flipper_format_write_string_cstr(
file, "Manufacturer", seader->reader_manufacturer))
if(!flipper_format_write_string_cstr(file, "Manufacturer", seader->reader_manufacturer))
break;
if(!flipper_format_write_string_cstr(file, "Product", seader->reader_product)) break;
uint32_t pid = seader->reader_pid;
@@ -111,9 +111,26 @@ void seader_reader_settings_save(Seader* seader) {
/* Called from the USB gadget on ICC power-on (USB thread). */
/* Grace getSamVersion single-shot, used as a sacrificial warm-up. */
static const uint8_t SEADER_READER_WARMUP[] = {0xA0, 0xDA, 0x02, 0x63, 0x00, 0x00, 0x0A, 0x44, 0x0A,
0x44, 0x00, 0x00, 0x00, 0xA0, 0x02, 0x82, 0x00, 0x00,
0x00};
static const uint8_t SEADER_READER_WARMUP[] = {
0xA0,
0xDA,
0x02,
0x63,
0x00,
0x00,
0x0A,
0x44,
0x0A,
0x44,
0x00,
0x00,
0x00,
0xA0,
0x02,
0x82,
0x00,
0x00,
0x00};
static void seader_reader_get_atr(void* ctx, uint8_t* atr, uint16_t* atr_len) {
Seader* seader = ctx;
@@ -228,7 +245,8 @@ static bool seader_reader_relay_once(
*out_len = n;
ok = true;
} else {
seader_trace("Reader", "SAM RX none/short st=%d len=%lu", st, (unsigned long)reader->resp_len);
seader_trace(
"Reader", "SAM RX none/short st=%d len=%lu", st, (unsigned long)reader->resp_len);
}
furi_mutex_release(reader->lock);
return ok;
@@ -260,7 +278,13 @@ static bool seader_reader_xfr(
uint16_t total = 0;
if(!seader_reader_relay_once(
seader, reader, apdu, apdu_len, resp, SEADER_CCID_MAX_RESP, &total,
seader,
reader,
apdu,
apdu_len,
resp,
SEADER_CCID_MAX_RESP,
&total,
SEADER_READER_TIMEOUT_MS)) {
FURI_LOG_W(TAG, "SAM relay timeout/short");
resp[0] = 0x6F;
@@ -275,7 +299,8 @@ static bool seader_reader_xfr(
while(total >= 2 && resp[total - 2] == 0x61 && guard++ < 16) {
uint8_t le = resp[total - 1];
total -= 2; /* strip the 61xx SW; keep any leading data */
uint16_t cap = (total < SEADER_CCID_MAX_RESP) ? (uint16_t)(SEADER_CCID_MAX_RESP - total) : 0;
uint16_t cap = (total < SEADER_CCID_MAX_RESP) ? (uint16_t)(SEADER_CCID_MAX_RESP - total) :
0;
if(cap < 2) break;
uint8_t get_response[5] = {0x00, 0xC0, 0x00, 0x00, le};
uint16_t got = 0;
+1 -2
View File
@@ -9,8 +9,7 @@ static void seader_scene_reader_render(Seader* seader) {
}
widget_reset(widget);
widget_add_string_element(
widget, 0, 0, AlignLeft, AlignTop, FontPrimary, "USB SAM Reader");
widget_add_string_element(widget, 0, 0, AlignLeft, AlignTop, FontPrimary, "USB SAM Reader");
char line[48];
+3 -5
View File
@@ -44,8 +44,8 @@ bool seader_scene_reader_name_on_event(void* context, SceneManagerEvent event) {
seader->reader_manuf_edit,
seader->reader_manufacturer,
SEADER_READER_NAME_MAX) != 0 ||
strncmp(seader->reader_name_edit, seader->reader_product, SEADER_READER_NAME_MAX) !=
0;
strncmp(
seader->reader_name_edit, seader->reader_product, SEADER_READER_NAME_MAX) != 0;
if(changed) {
seader->reader_pid++;
if(seader->reader_pid == 0) {
@@ -53,9 +53,7 @@ bool seader_scene_reader_name_on_event(void* context, SceneManagerEvent event) {
}
}
strlcpy(
seader->reader_manufacturer,
seader->reader_manuf_edit,
SEADER_READER_NAME_MAX);
seader->reader_manufacturer, seader->reader_manuf_edit, SEADER_READER_NAME_MAX);
strlcpy(seader->reader_product, seader->reader_name_edit, SEADER_READER_NAME_MAX);
seader_reader_settings_save(seader);
scene_manager_search_and_switch_to_previous_scene(
+3 -3
View File
@@ -92,9 +92,9 @@ bool seader_scene_sam_present_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
if(seader->sam_present_menu_guard_active &&
(event.event == SubmenuIndexRead || event.event == SubmenuIndexSaved ||
event.event == SubmenuIndexReaderEmulation ||
event.event == SubmenuIndexReaderName || event.event == SubmenuIndexAPDURunner ||
event.event == SubmenuIndexReadConfigCard || event.event == SubmenuIndexSamInfo)) {
event.event == SubmenuIndexReaderEmulation || event.event == SubmenuIndexReaderName ||
event.event == SubmenuIndexAPDURunner || event.event == SubmenuIndexReadConfigCard ||
event.event == SubmenuIndexSamInfo)) {
seader->sam_present_menu_guard_active = false;
consumed = true;
} else if(event.event == SubmenuIndexRead) {
+2 -1
View File
@@ -237,7 +237,8 @@ static void ccid_send_slot_status(uint8_t seq) {
ccid_send(p, 10);
}
static void ccid_send_parameters(uint8_t seq, uint8_t proto, const uint8_t* params, uint8_t nparams) {
static void
ccid_send_parameters(uint8_t seq, uint8_t proto, const uint8_t* params, uint8_t nparams) {
if(nparams > 7) nparams = 7;
uint8_t* p = g_ccid->tx_buf;
p[0] = RDR_TO_PC_PARAMETERS; /* 0x82 */
+3 -2
View File
@@ -17,7 +17,7 @@
#define SEADER_CCID_MAX_RESP 272u
// Max CCID message length (advertised as dwMaxCCIDMessageLength), both
// directions = 10-byte header + response body.
#define SEADER_CCID_MSG_MAX (10u + SEADER_CCID_MAX_RESP)
#define SEADER_CCID_MSG_MAX (10u + SEADER_CCID_MAX_RESP)
typedef struct {
uint16_t vid;
@@ -30,7 +30,8 @@ typedef struct {
// Relay one APDU to the SAM. Must always fill `resp`/`*resp_len` (e.g. 6F00
// on failure) and may block until the SAM answers. Returns true on success.
bool (*xfr)(void* ctx, const uint8_t* apdu, uint16_t apdu_len, uint8_t* resp, uint16_t* resp_len);
bool (
*xfr)(void* ctx, const uint8_t* apdu, uint16_t apdu_len, uint8_t* resp, uint16_t* resp_len);
void* ctx;
} SeaderCcidReaderConfig;