[FL-3827] iButton ID writing (#3734)

* Function naming corrections and enabled writing ID for all dallas blanks
* Enable ID writing for ds1971 and ds1996
* Sync API Symbols

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Astra
2024-08-01 01:59:41 +09:00
committed by GitHub
parent 380ec2ac46
commit 01b402ba2b
23 changed files with 76 additions and 59 deletions

View File

@@ -5,6 +5,8 @@
#include "dallas_common.h"
#include "../blanks/tm2004.h"
#define DS1996_FAMILY_CODE 0x0CU
#define DS1996_FAMILY_NAME "DS1996"
@@ -29,6 +31,7 @@ typedef struct {
} DS1996ProtocolData;
static bool dallas_ds1996_read(OneWireHost*, void*);
static bool dallas_ds1996_write_id(OneWireHost*, iButtonProtocolData*);
static bool dallas_ds1996_write_copy(OneWireHost*, iButtonProtocolData*);
static void dallas_ds1996_emulate(OneWireSlave*, iButtonProtocolData*);
static bool dallas_ds1996_load(FlipperFormat*, uint32_t, iButtonProtocolData*);
@@ -43,13 +46,14 @@ static void dallas_ds1996_apply_edits(iButtonProtocolData*);
const iButtonProtocolDallasBase ibutton_protocol_ds1996 = {
.family_code = DS1996_FAMILY_CODE,
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteCopy,
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteId |
iButtonProtocolFeatureWriteCopy,
.data_size = sizeof(DS1996ProtocolData),
.manufacturer = DALLAS_COMMON_MANUFACTURER_NAME,
.name = DS1996_FAMILY_NAME,
.read = dallas_ds1996_read,
.write_blank = NULL, /* Data too big for known blanks */
.write_id = dallas_ds1996_write_id,
.write_copy = dallas_ds1996_write_copy,
.emulate = dallas_ds1996_emulate,
.save = dallas_ds1996_save,
@@ -83,6 +87,11 @@ bool dallas_ds1996_read(OneWireHost* host, iButtonProtocolData* protocol_data) {
return success;
}
bool dallas_ds1996_write_id(OneWireHost* host, iButtonProtocolData* protocol_data) {
DS1996ProtocolData* data = protocol_data;
return tm2004_write(host, data->rom_data.bytes, sizeof(DallasCommonRomData));
}
bool dallas_ds1996_write_copy(OneWireHost* host, iButtonProtocolData* protocol_data) {
DS1996ProtocolData* data = protocol_data;
bool success = false;