diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 8d17d7115..f877b88dd 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -436,6 +436,84 @@ void SendCapabilities(void) { capabilities.baudrate = USART_BAUD_RATE; else capabilities.baudrate = 0; // no real baudrate for USB-CDC + +#ifdef WITH_FLASH + capabilities.compiled_with_flash = true; +#else + capabilities.compiled_with_flash = false; +#endif +#ifdef WITH_SMARTCARD + capabilities.compiled_with_smartcard = true; +#else + capabilities.compiled_with_smartcard = false; +#endif + +#ifdef WITH_FPC + capabilities.compiled_with_fpc = true; +#else + capabilities.compiled_with_fpc = false; +#endif +#ifdef WITH_FPC_HOST + capabilities.compiled_with_fpc_host = true; +#else + capabilities.compiled_with_fpc_host = false; +#endif +#ifdef WITH_LF + capabilities.compiled_with_lf = true; +#else + capabilities.compiled_with_lf = false; +#endif +#ifdef WITH_HITAG + capabilities.compiled_with_hitag = true; +#else + capabilities.compiled_with_hitag = false; +#endif +#ifdef WITH_HFSNIFF + capabilities.compiled_with_hfsniff = true; +#else + capabilities.compiled_with_hfsniff = false; +#endif +#ifdef WITH_ISO14443a + capabilities.compiled_with_iso14443a = true; +#else + capabilities.compiled_with_iso14443a = false; +#endif +#ifdef WITH_ISO14443b + capabilities.compiled_with_iso14443b = true; +#else + capabilities.compiled_with_iso14443b = false; +#endif +#ifdef WITH_ISO15693 + capabilities.compiled_with_iso15693 = true; +#else + capabilities.compiled_with_iso15693 = false; +#endif +#ifdef WITH_FELICA + capabilities.compiled_with_felica = true; +#else + capabilities.compiled_with_felica = false; +#endif +#ifdef WITH_LEGICRF + capabilities.compiled_with_legicrf = true; +#else + capabilities.compiled_with_legicrf = false; +#endif +#ifdef WITH_ICLASS + capabilities.compiled_with_iclass = true; +#else + capabilities.compiled_with_iclass = false; +#endif +#ifdef WITH_LCD + capabilities.compiled_with_lcd = true; +#else + capabilities.compiled_with_lcd = false; +#endif + +// TODO +// capabilities.hw_available_flash +// capabilities.hw_available_smartcard +// capabilities.hw_available_fpc_host + reply_ng(CMD_CAPABILITIES, PM3_SUCCESS, (uint8_t *)&capabilities, sizeof(capabilities)); } diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 41ebf221c..ffbdc4734 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -141,6 +141,31 @@ typedef struct { typedef struct { uint32_t baudrate; bool via_fpc; + // rdv4 + bool compiled_with_flash; + bool compiled_with_smartcard; + bool compiled_with_fpc; + bool compiled_with_fpc_host; + // lf + bool compiled_with_lf; + bool compiled_with_hitag; + // hf + bool compiled_with_hfsniff; + bool compiled_with_iso14443a; + bool compiled_with_iso14443b; + bool compiled_with_iso15693; + bool compiled_with_felica; + bool compiled_with_legicrf; + bool compiled_with_iclass; + // misc + bool compiled_with_lcd; + + // Following are not yet implemented: + // rdv4 + bool hw_available_flash; + bool hw_available_smartcard; + // rdv4 bt addon + bool hw_available_fpc_host; } PACKED capabilities_t; extern capabilities_t pm3_capabilities;