diff --git a/assembly.h b/assembly.h index 69a3d86..a659ef7 100644 --- a/assembly.h +++ b/assembly.h @@ -21,7 +21,7 @@ #endif #if defined(__APPLE__) && defined(__aarch64__) -#define SEPARATOR %% +#define SEPARATOR % % #else #define SEPARATOR ; #endif @@ -42,15 +42,14 @@ #define LOCAL_LABEL(name) .L_##name #define FILE_LEVEL_DIRECTIVE #if defined(__arm__) || defined(__aarch64__) -#define SYMBOL_IS_FUNC(name) .type name,%function +#define SYMBOL_IS_FUNC(name) .type name, % function #else -#define SYMBOL_IS_FUNC(name) .type name,@function +#define SYMBOL_IS_FUNC(name) .type name, @function #endif -#define CONST_SECTION .section .rodata +#define CONST_SECTION .section.rodata -#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \ - defined(__linux__) -#define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits +#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || defined(__linux__) +#define NO_EXEC_STACK_DIRECTIVE .section.note.GNU - stack, "", % progbits #else #define NO_EXEC_STACK_DIRECTIVE #endif @@ -58,23 +57,17 @@ #else // !__APPLE__ && !__ELF__ #define HIDDEN(name) -#define LOCAL_LABEL(name) .L ## name +#define LOCAL_LABEL(name) .L##name #define FILE_LEVEL_DIRECTIVE -#define SYMBOL_IS_FUNC(name) \ - .def name SEPARATOR \ - .scl 2 SEPARATOR \ - .type 32 SEPARATOR \ - .endef -#define CONST_SECTION .section .rdata,"rd" +#define SYMBOL_IS_FUNC(name) .def name SEPARATOR.scl 2 SEPARATOR.type 32 SEPARATOR.endef +#define CONST_SECTION .section.rdata, "rd" #define NO_EXEC_STACK_DIRECTIVE #endif #if defined(__arm__) || defined(__aarch64__) -#define FUNC_ALIGN \ - .text SEPARATOR \ - .balign 16 SEPARATOR +#define FUNC_ALIGN .text SEPARATOR.balign 16 SEPARATOR #else #define FUNC_ALIGN #endif @@ -97,18 +90,11 @@ #define PAC_FLAG 0 #endif -#define GNU_PROPERTY(type, value) \ - .pushsection .note.gnu.property, "a" SEPARATOR \ - .p2align 3 SEPARATOR \ - .word 4 SEPARATOR \ - .word 16 SEPARATOR \ - .word NT_GNU_PROPERTY_TYPE_0 SEPARATOR \ - .asciz "GNU" SEPARATOR \ - .word type SEPARATOR \ - .word 4 SEPARATOR \ - .word value SEPARATOR \ - .word 0 SEPARATOR \ - .popsection +#define GNU_PROPERTY(type, value) \ + .pushsection.note.gnu.property, \ + "a" SEPARATOR.p2align 3 SEPARATOR.word 4 SEPARATOR.word 16 SEPARATOR \ + .word NT_GNU_PROPERTY_TYPE_0 SEPARATOR.asciz "GNU" SEPARATOR.word type \ + SEPARATOR.word 4 SEPARATOR.word value SEPARATOR.word 0 SEPARATOR.popsection #if BTI_FLAG != 0 #define BTI_C hint #34 @@ -118,9 +104,8 @@ #define BTI_J #endif -#if (BTI_FLAG | PAC_FLAG) != 0 -#define GNU_PROPERTY_BTI_PAC \ - GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG) +#if(BTI_FLAG | PAC_FLAG) != 0 +#define GNU_PROPERTY_BTI_PAC GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG) #else #define GNU_PROPERTY_BTI_PAC #endif @@ -140,10 +125,10 @@ // - for '-mthumb -march=armv7' compiler defines '__thumb__' and '__thumb2__' #if defined(__thumb2__) || defined(__thumb__) #define DEFINE_CODE_STATE .thumb SEPARATOR -#define DECLARE_FUNC_ENCODING .thumb_func SEPARATOR +#define DECLARE_FUNC_ENCODING .thumb_func SEPARATOR #if defined(__thumb2__) #define USE_THUMB_2 -#define IT(cond) it cond +#define IT(cond) it cond #define ITT(cond) itt cond #define ITE(cond) ite cond #else @@ -167,7 +152,7 @@ #if defined(__ARM_ARCH_4T__) || __ARM_ARCH >= 5 #define ARM_HAS_BX #endif -#if !defined(__ARM_FEATURE_CLZ) && !defined(USE_THUMB_1) && \ +#if !defined(__ARM_FEATURE_CLZ) && !defined(USE_THUMB_1) && \ (__ARM_ARCH >= 6 || (__ARM_ARCH == 5 && !defined(__ARM_ARCH_5__))) #define __ARM_FEATURE_CLZ #endif @@ -182,11 +167,14 @@ // pop {pc} can't switch Thumb mode on ARMv4T #if __ARM_ARCH >= 5 -#define POP_PC() pop {pc} +#define POP_PC() \ + pop { \ + pc \ + } #else -#define POP_PC() \ - pop {ip}; \ - JMP(ip) +#define POP_PC() \ + pop{ip}; \ + JMP(ip) #endif #if defined(USE_THUMB_2) @@ -210,83 +198,71 @@ #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name) #ifdef VISIBILITY_HIDDEN -#define DECLARE_SYMBOL_VISIBILITY(name) \ - HIDDEN(SYMBOL_NAME(name)) SEPARATOR -#define DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) \ - HIDDEN(name) SEPARATOR +#define DECLARE_SYMBOL_VISIBILITY(name) HIDDEN(SYMBOL_NAME(name)) SEPARATOR +#define DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) HIDDEN(name) SEPARATOR #else #define DECLARE_SYMBOL_VISIBILITY(name) #define DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) #endif -#define DEFINE_COMPILERRT_FUNCTION(name) \ - DEFINE_CODE_STATE \ - FILE_LEVEL_DIRECTIVE SEPARATOR \ - .globl SYMBOL_NAME(name) SEPARATOR \ - SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - DECLARE_SYMBOL_VISIBILITY(name) \ - DECLARE_FUNC_ENCODING \ - SYMBOL_NAME(name): +#define DEFINE_COMPILERRT_FUNCTION(name) \ + DEFINE_CODE_STATE \ + FILE_LEVEL_DIRECTIVE SEPARATOR.globl SYMBOL_NAME(name) \ + SEPARATOR \ + SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR DECLARE_SYMBOL_VISIBILITY(name) \ + DECLARE_FUNC_ENCODING \ + SYMBOL_NAME(name) \ + : -#define DEFINE_COMPILERRT_THUMB_FUNCTION(name) \ - DEFINE_CODE_STATE \ - FILE_LEVEL_DIRECTIVE SEPARATOR \ - .globl SYMBOL_NAME(name) SEPARATOR \ - SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR \ - .thumb_func SEPARATOR \ - SYMBOL_NAME(name): +#define DEFINE_COMPILERRT_THUMB_FUNCTION(name) \ + DEFINE_CODE_STATE \ + FILE_LEVEL_DIRECTIVE SEPARATOR.globl SYMBOL_NAME(name) \ + SEPARATOR \ + SYMBOL_IS_FUNC(SYMBOL_NAME(name)) \ + SEPARATOR DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR.thumb_func SEPARATOR SYMBOL_NAME(name) \ + : -#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ - DEFINE_CODE_STATE \ - FILE_LEVEL_DIRECTIVE SEPARATOR \ - .globl SYMBOL_NAME(name) SEPARATOR \ - SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - HIDDEN(SYMBOL_NAME(name)) SEPARATOR \ - DECLARE_FUNC_ENCODING \ - SYMBOL_NAME(name): +#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ + DEFINE_CODE_STATE \ + FILE_LEVEL_DIRECTIVE SEPARATOR.globl SYMBOL_NAME(name) \ + SEPARATOR \ + SYMBOL_IS_FUNC(SYMBOL_NAME(name)) \ + SEPARATOR HIDDEN(SYMBOL_NAME(name)) SEPARATOR DECLARE_FUNC_ENCODING SYMBOL_NAME(name) \ + : -#define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \ - DEFINE_CODE_STATE \ - .globl name SEPARATOR \ - SYMBOL_IS_FUNC(name) SEPARATOR \ - HIDDEN(name) SEPARATOR \ - DECLARE_FUNC_ENCODING \ - name: +#define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \ + DEFINE_CODE_STATE.globl name SEPARATOR SYMBOL_IS_FUNC(name) \ + SEPARATOR \ + HIDDEN(name) SEPARATOR DECLARE_FUNC_ENCODING name: -#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name) \ - DEFINE_CODE_STATE \ - FUNC_ALIGN \ - .globl name SEPARATOR \ - SYMBOL_IS_FUNC(name) SEPARATOR \ - DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) SEPARATOR \ - CFI_START SEPARATOR \ - DECLARE_FUNC_ENCODING \ - name: SEPARATOR BTI_C +#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name) \ + DEFINE_CODE_STATE \ + FUNC_ALIGN.globl name SEPARATOR SYMBOL_IS_FUNC(name) \ + SEPARATOR \ + DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) \ + SEPARATOR CFI_START SEPARATOR DECLARE_FUNC_ENCODING name : SEPARATOR BTI_C -#define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target) \ - .globl SYMBOL_NAME(name) SEPARATOR \ - SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \ - DECLARE_SYMBOL_VISIBILITY(SYMBOL_NAME(name)) SEPARATOR \ - .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR +#define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target) \ + .globl SYMBOL_NAME(name) \ + SEPARATOR \ + SYMBOL_IS_FUNC(SYMBOL_NAME(name)) \ + SEPARATOR DECLARE_SYMBOL_VISIBILITY(SYMBOL_NAME(name)) SEPARATOR.set SYMBOL_NAME(name), \ + SYMBOL_NAME(target) SEPARATOR #if defined(__ARM_EABI__) -#define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name) \ - DEFINE_COMPILERRT_FUNCTION_ALIAS(aeabi_name, name) +#define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name) \ + DEFINE_COMPILERRT_FUNCTION_ALIAS(aeabi_name, name) #else #define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name) #endif #ifdef __ELF__ -#define END_COMPILERRT_FUNCTION(name) \ - .size SYMBOL_NAME(name), . - SYMBOL_NAME(name) -#define END_COMPILERRT_OUTLINE_FUNCTION(name) \ - CFI_END SEPARATOR \ - .size SYMBOL_NAME(name), . - SYMBOL_NAME(name) +#define END_COMPILERRT_FUNCTION(name) .size SYMBOL_NAME(name), .- SYMBOL_NAME(name) +#define END_COMPILERRT_OUTLINE_FUNCTION(name) \ + CFI_END SEPARATOR.size SYMBOL_NAME(name), .- SYMBOL_NAME(name) #else #define END_COMPILERRT_FUNCTION(name) -#define END_COMPILERRT_OUTLINE_FUNCTION(name) \ - CFI_END +#define END_COMPILERRT_OUTLINE_FUNCTION(name) CFI_END #endif #endif // COMPILERRT_ASSEMBLY_H diff --git a/ccid.h b/ccid.h index 9ef2246..3c07234 100644 --- a/ccid.h +++ b/ccid.h @@ -1,6 +1,5 @@ #pragma once - #include // malloc #include // uint32_t #include // __VA_ARGS__ @@ -24,42 +23,38 @@ * * BULK_OUT messages from PC to Reader * * Defined in CCID Rev 1.1 6.1 (page 26) * */ -#define CCID_MESSAGE_TYPE_PC_to_RDR_IccPowerOn 0x62 -#define CCID_MESSAGE_TYPE_PC_to_RDR_IccPowerOff 0x63 -#define CCID_MESSAGE_TYPE_PC_to_RDR_GetSlotStatus 0x65 -#define CCID_MESSAGE_TYPE_PC_to_RDR_XfrBlock 0x6f -#define CCID_MESSAGE_TYPE_PC_to_RDR_GetParameters 0x6c -#define CCID_MESSAGE_TYPE_PC_to_RDR_ResetParameters 0x6d -#define CCID_MESSAGE_TYPE_PC_to_RDR_SetParameters 0x61 -#define CCID_MESSAGE_TYPE_PC_to_RDR_Escape 0x6b -#define CCID_MESSAGE_TYPE_PC_to_RDR_IccClock 0x6e -#define CCID_MESSAGE_TYPE_PC_to_RDR_T0APDU 0x6a -#define CCID_MESSAGE_TYPE_PC_to_RDR_Secure 0x69 -#define CCID_MESSAGE_TYPE_PC_to_RDR_Mechanical 0x71 -#define CCID_MESSAGE_TYPE_PC_to_RDR_Abort 0x72 +#define CCID_MESSAGE_TYPE_PC_to_RDR_IccPowerOn 0x62 +#define CCID_MESSAGE_TYPE_PC_to_RDR_IccPowerOff 0x63 +#define CCID_MESSAGE_TYPE_PC_to_RDR_GetSlotStatus 0x65 +#define CCID_MESSAGE_TYPE_PC_to_RDR_XfrBlock 0x6f +#define CCID_MESSAGE_TYPE_PC_to_RDR_GetParameters 0x6c +#define CCID_MESSAGE_TYPE_PC_to_RDR_ResetParameters 0x6d +#define CCID_MESSAGE_TYPE_PC_to_RDR_SetParameters 0x61 +#define CCID_MESSAGE_TYPE_PC_to_RDR_Escape 0x6b +#define CCID_MESSAGE_TYPE_PC_to_RDR_IccClock 0x6e +#define CCID_MESSAGE_TYPE_PC_to_RDR_T0APDU 0x6a +#define CCID_MESSAGE_TYPE_PC_to_RDR_Secure 0x69 +#define CCID_MESSAGE_TYPE_PC_to_RDR_Mechanical 0x71 +#define CCID_MESSAGE_TYPE_PC_to_RDR_Abort 0x72 #define CCID_MESSAGE_TYPE_PC_to_RDR_SetDataRateAndClockFrequency 0x73 /* * * BULK_IN messages from Reader to PC * * Defined in CCID Rev 1.1 6.2 (page 48) * */ -#define CCID_MESSAGE_TYPE_RDR_to_PC_DataBlock 0x80 -#define CCID_MESSAGE_TYPE_RDR_to_PC_SlotStatus 0x81 -#define CCID_MESSAGE_TYPE_RDR_to_PC_Parameters 0x82 -#define CCID_MESSAGE_TYPE_RDR_to_PC_Escape 0x83 +#define CCID_MESSAGE_TYPE_RDR_to_PC_DataBlock 0x80 +#define CCID_MESSAGE_TYPE_RDR_to_PC_SlotStatus 0x81 +#define CCID_MESSAGE_TYPE_RDR_to_PC_Parameters 0x82 +#define CCID_MESSAGE_TYPE_RDR_to_PC_Escape 0x83 #define CCID_MESSAGE_TYPE_RDR_to_PC_DataRateAndClockFrequency 0x84 /* * * INTERRUPT_IN messages from Reader to PC * * Defined in CCID Rev 1.1 6.3 (page 56) * */ -#define CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange 0x50 -#define CCID_MESSAGE_TYPE_RDR_to_PC_HardwareError 0x51 +#define CCID_MESSAGE_TYPE_RDR_to_PC_NotifySlotChange 0x50 +#define CCID_MESSAGE_TYPE_RDR_to_PC_HardwareError 0x51 /* Status codes that go in bStatus (see 6.2.6) */ -enum { - ICC_STATUS_PRESENT_ACTIVE = 0, - ICC_STATUS_PRESENT_INACTIVE, - ICC_STATUS_NOT_PRESENT -}; +enum { ICC_STATUS_PRESENT_ACTIVE = 0, ICC_STATUS_PRESENT_INACTIVE, ICC_STATUS_NOT_PRESENT }; enum { COMMAND_STATUS_NO_ERROR = 0, COMMAND_STATUS_FAILED, @@ -68,11 +63,11 @@ enum { /* Error codes that go in bError (see 6.2.6) */ enum { ERROR_CMD_NOT_SUPPORTED = 0, - ERROR_CMD_ABORTED = -1, - ERROR_ICC_MUTE = -2, - ERROR_XFR_PARITY_ERROR = -3, - ERROR_XFR_OVERRUN = -4, - ERROR_HW_ERROR = -5, + ERROR_CMD_ABORTED = -1, + ERROR_ICC_MUTE = -2, + ERROR_XFR_PARITY_ERROR = -3, + ERROR_XFR_OVERRUN = -4, + ERROR_HW_ERROR = -5, }; struct CCID_Message { @@ -83,7 +78,7 @@ struct CCID_Message { uint8_t bStatus; uint8_t bError; - uint8_t *payload; + uint8_t* payload; size_t consumed; }; @@ -91,5 +86,5 @@ void PC_to_RDR_IccPowerOn(SeaderUartBridge* seader_uart); void PC_to_RDR_GetSlotStatus(SeaderUartBridge* seader_uart); void PC_to_RDR_SetParameters(SeaderUartBridge* seader_uart); void PC_to_RDR_GetParameters(SeaderUartBridge* seader_uart); -void PC_to_RDR_XfrBlock(SeaderUartBridge* seader_uart, uint8_t *data, size_t len); +void PC_to_RDR_XfrBlock(SeaderUartBridge* seader_uart, uint8_t* data, size_t len); size_t processCCID(SeaderWorker* seader_worker, uint8_t* cmd, size_t cmd_len); diff --git a/scenes/seader_scene_card_menu.c b/scenes/seader_scene_card_menu.c index 744d579..1c932d8 100644 --- a/scenes/seader_scene_card_menu.c +++ b/scenes/seader_scene_card_menu.c @@ -19,9 +19,17 @@ void seader_scene_card_menu_on_enter(void* context) { submenu_add_item( submenu, "Save", SubmenuIndexSave, seader_scene_card_menu_submenu_callback, seader); submenu_add_item( - submenu, "Save Picopass", SubmenuIndexSavePicopass, seader_scene_card_menu_submenu_callback, seader); + submenu, + "Save Picopass", + SubmenuIndexSavePicopass, + seader_scene_card_menu_submenu_callback, + seader); submenu_add_item( - submenu, "Save RFID", SubmenuIndexSaveRFID, seader_scene_card_menu_submenu_callback, seader); + submenu, + "Save RFID", + SubmenuIndexSaveRFID, + seader_scene_card_menu_submenu_callback, + seader); submenu_set_selected_item( seader->submenu, diff --git a/seader.h b/seader.h index 36dc2e0..639086c 100644 --- a/seader.h +++ b/seader.h @@ -1,4 +1,3 @@ #pragma once typedef struct Seader Seader; - diff --git a/seader_credential.h b/seader_credential.h index 01ee69d..23b44d1 100644 --- a/seader_credential.h +++ b/seader_credential.h @@ -11,11 +11,11 @@ typedef void (*SeaderLoadingCallback)(void* context, bool state); typedef enum { - SeaderCredentialTypeNone, - SeaderCredentialTypePicopass, - SeaderCredentialType14A, - // Might need to make 14a into "javacard" and add Desfire - SeaderCredentialTypeMifareClassic, + SeaderCredentialTypeNone, + SeaderCredentialTypePicopass, + SeaderCredentialType14A, + // Might need to make 14a into "javacard" and add Desfire + SeaderCredentialTypeMifareClassic, } SeaderCredentialType; typedef enum { diff --git a/seader_worker.c b/seader_worker.c index 660e49f..4312eab 100644 --- a/seader_worker.c +++ b/seader_worker.c @@ -201,7 +201,8 @@ bool read_nfc(SeaderUartBridge* seader_uart) { cardDetails->atqa = &atqa; sendCardDetected(seader_uart, cardDetails); rtn = true; - } else if(mf_classic_check_card_type(nfc_data.atqa[0], nfc_data.atqa[1], nfc_data.sak)) { + } else if(mf_classic_check_card_type( + nfc_data.atqa[0], nfc_data.atqa[1], nfc_data.sak)) { FURI_LOG_D(TAG, "MFC"); OCTET_STRING_t atqa = {.buf = nfc_data.atqa, .size = sizeof(nfc_data.atqa)}; cardDetails->atqa = &atqa; diff --git a/sub.h b/sub.h index 5c73180..26f1920 100644 --- a/sub.h +++ b/sub.h @@ -42,5 +42,4 @@ struct SeaderUartBridge { size_t tx_len; }; - typedef struct SeaderUartBridge SeaderUartBridge; diff --git a/uart.h b/uart.h index dbbd3dd..bccf8bb 100644 --- a/uart.h +++ b/uart.h @@ -15,6 +15,5 @@ void seader_uart_set_config(SeaderUartBridge* seader_uart, SeaderUartConfig* cfg void seader_uart_get_config(SeaderUartBridge* seader_uart, SeaderUartConfig* cfg); void seader_uart_get_state(SeaderUartBridge* seader_uart, SeaderUartState* st); - SeaderUartBridge* seader_uart_alloc(); void seader_uart_free(SeaderUartBridge* seader_uart);