[FL-3811] Write to ultralight cards is now possible (#3684)

* Added new function which returns end block for write operation
* Enabled write menu item also for Ultralight 11 and 21
* Fix api_symbols.csv for f18
* Bump Api Symbols

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
RebornedBrain
2024-06-08 16:38:02 +03:00
committed by GitHub
parent 2f9ca172e3
commit ba3beeddeb
6 changed files with 24 additions and 4 deletions

View File

@@ -570,6 +570,22 @@ uint16_t mf_ultralight_get_config_page_num(MfUltralightType type) {
return mf_ultralight_features[type].config_page;
}
uint8_t mf_ultralight_get_write_end_page(MfUltralightType type) {
furi_check(type < MfUltralightTypeNum);
furi_assert(
type == MfUltralightTypeUL11 || type == MfUltralightTypeUL21 ||
type == MfUltralightTypeNTAG213 || type == MfUltralightTypeNTAG215 ||
type == MfUltralightTypeNTAG216);
uint8_t end_page = mf_ultralight_get_config_page_num(type);
if(type == MfUltralightTypeNTAG213 || type == MfUltralightTypeNTAG215 ||
type == MfUltralightTypeNTAG216) {
end_page -= 1;
}
return end_page;
}
uint8_t mf_ultralight_get_pwd_page_num(MfUltralightType type) {
furi_check(type < MfUltralightTypeNum);

View File

@@ -210,6 +210,8 @@ uint32_t mf_ultralight_get_feature_support_set(MfUltralightType type);
uint16_t mf_ultralight_get_config_page_num(MfUltralightType type);
uint8_t mf_ultralight_get_write_end_page(MfUltralightType type);
uint8_t mf_ultralight_get_pwd_page_num(MfUltralightType type);
bool mf_ultralight_is_page_pwd_or_pack(MfUltralightType type, uint16_t page_num);

View File

@@ -616,7 +616,7 @@ static NfcCommand mf_ultralight_poller_handler_write_pages(MfUltralightPoller* i
do {
const MfUltralightData* write_data = instance->mfu_event.data->write_data;
uint8_t end_page = mf_ultralight_get_config_page_num(write_data->type) - 1;
uint8_t end_page = mf_ultralight_get_write_end_page(write_data->type);
if(instance->current_page == end_page) {
instance->state = MfUltralightPollerStateWriteSuccess;
break;