mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 12:42:30 +04:00
Merge remote-tracking branch 'OFW/dev' into dev
This commit is contained in:
@@ -25,7 +25,7 @@ typedef struct {
|
||||
const char* name;
|
||||
|
||||
iButtonProtocolDallasReadWriteFunc read;
|
||||
iButtonProtocolDallasReadWriteFunc write_blank;
|
||||
iButtonProtocolDallasReadWriteFunc write_id;
|
||||
iButtonProtocolDallasReadWriteFunc write_copy;
|
||||
iButtonProtocolDallasEmulateFunc emulate;
|
||||
iButtonProtocolDallasSaveFunc save;
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
#include "dallas_common.h"
|
||||
|
||||
#include "../blanks/tm2004.h"
|
||||
|
||||
#define DS1971_FAMILY_CODE 0x14U
|
||||
#define DS1971_FAMILY_NAME "DS1971"
|
||||
|
||||
@@ -31,6 +33,7 @@ typedef struct {
|
||||
} DS1971ProtocolData;
|
||||
|
||||
static bool dallas_ds1971_read(OneWireHost*, void*);
|
||||
static bool dallas_ds1971_write_id(OneWireHost*, iButtonProtocolData*);
|
||||
static bool dallas_ds1971_write_copy(OneWireHost*, iButtonProtocolData*);
|
||||
static void dallas_ds1971_emulate(OneWireSlave*, iButtonProtocolData*);
|
||||
static bool dallas_ds1971_load(FlipperFormat*, uint32_t, iButtonProtocolData*);
|
||||
@@ -48,13 +51,14 @@ static bool ds1971_emulate_read_mem(OneWireSlave* bus, const uint8_t* data, size
|
||||
|
||||
const iButtonProtocolDallasBase ibutton_protocol_ds1971 = {
|
||||
.family_code = DS1971_FAMILY_CODE,
|
||||
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteCopy,
|
||||
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteId |
|
||||
iButtonProtocolFeatureWriteCopy,
|
||||
.data_size = sizeof(DS1971ProtocolData),
|
||||
.manufacturer = DALLAS_COMMON_MANUFACTURER_NAME,
|
||||
.name = DS1971_FAMILY_NAME,
|
||||
|
||||
.read = dallas_ds1971_read,
|
||||
.write_blank = NULL, // TODO FL-3531: Implement writing to blank
|
||||
.write_id = dallas_ds1971_write_id,
|
||||
.write_copy = dallas_ds1971_write_copy,
|
||||
.emulate = dallas_ds1971_emulate,
|
||||
.save = dallas_ds1971_save,
|
||||
@@ -74,6 +78,11 @@ bool dallas_ds1971_read(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
dallas_ds1971_read_mem(host, 0, data->eeprom_data, DS1971_EEPROM_DATA_SIZE);
|
||||
}
|
||||
|
||||
bool dallas_ds1971_write_id(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
DS1971ProtocolData* data = protocol_data;
|
||||
return tm2004_write(host, data->rom_data.bytes, sizeof(DallasCommonRomData));
|
||||
}
|
||||
|
||||
bool dallas_ds1971_write_copy(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
DS1971ProtocolData* data = protocol_data;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ typedef struct {
|
||||
} DS1990ProtocolData;
|
||||
|
||||
static bool dallas_ds1990_read(OneWireHost*, iButtonProtocolData*);
|
||||
static bool dallas_ds1990_write_blank(OneWireHost*, iButtonProtocolData*);
|
||||
static bool dallas_ds1990_write_id(OneWireHost*, iButtonProtocolData*);
|
||||
static void dallas_ds1990_emulate(OneWireSlave*, iButtonProtocolData*);
|
||||
static bool dallas_ds1990_load(FlipperFormat*, uint32_t, iButtonProtocolData*);
|
||||
static bool dallas_ds1990_save(FlipperFormat*, const iButtonProtocolData*);
|
||||
@@ -36,13 +36,13 @@ static void dallas_ds1990_apply_edits(iButtonProtocolData*);
|
||||
|
||||
const iButtonProtocolDallasBase ibutton_protocol_ds1990 = {
|
||||
.family_code = DS1990_FAMILY_CODE,
|
||||
.features = iButtonProtocolFeatureWriteBlank,
|
||||
.features = iButtonProtocolFeatureWriteId,
|
||||
.data_size = sizeof(DS1990ProtocolData),
|
||||
.manufacturer = DALLAS_COMMON_MANUFACTURER_NAME,
|
||||
.name = DS1990_FAMILY_NAME,
|
||||
|
||||
.read = dallas_ds1990_read,
|
||||
.write_blank = dallas_ds1990_write_blank,
|
||||
.write_id = dallas_ds1990_write_id,
|
||||
.write_copy = NULL, /* No data to write a copy */
|
||||
.emulate = dallas_ds1990_emulate,
|
||||
.save = dallas_ds1990_save,
|
||||
@@ -61,7 +61,7 @@ bool dallas_ds1990_read(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
return onewire_host_reset(host) && dallas_common_read_rom(host, &data->rom_data);
|
||||
}
|
||||
|
||||
bool dallas_ds1990_write_blank(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
bool dallas_ds1990_write_id(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
DS1990ProtocolData* data = protocol_data;
|
||||
|
||||
return rw1990_write_v1(host, data->rom_data.bytes, sizeof(DallasCommonRomData)) ||
|
||||
|
||||
@@ -31,7 +31,7 @@ typedef struct {
|
||||
} DS1992ProtocolData;
|
||||
|
||||
static bool dallas_ds1992_read(OneWireHost*, void*);
|
||||
static bool dallas_ds1992_write_blank(OneWireHost*, iButtonProtocolData*);
|
||||
static bool dallas_ds1992_write_id(OneWireHost*, iButtonProtocolData*);
|
||||
static bool dallas_ds1992_write_copy(OneWireHost*, iButtonProtocolData*);
|
||||
static void dallas_ds1992_emulate(OneWireSlave*, iButtonProtocolData*);
|
||||
static bool dallas_ds1992_load(FlipperFormat*, uint32_t, iButtonProtocolData*);
|
||||
@@ -46,14 +46,14 @@ static void dallas_ds1992_apply_edits(iButtonProtocolData*);
|
||||
|
||||
const iButtonProtocolDallasBase ibutton_protocol_ds1992 = {
|
||||
.family_code = DS1992_FAMILY_CODE,
|
||||
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteBlank |
|
||||
.features = iButtonProtocolFeatureExtData | iButtonProtocolFeatureWriteId |
|
||||
iButtonProtocolFeatureWriteCopy,
|
||||
.data_size = sizeof(DS1992ProtocolData),
|
||||
.manufacturer = DALLAS_COMMON_MANUFACTURER_NAME,
|
||||
.name = DS1992_FAMILY_NAME,
|
||||
|
||||
.read = dallas_ds1992_read,
|
||||
.write_blank = dallas_ds1992_write_blank,
|
||||
.write_id = dallas_ds1992_write_id,
|
||||
.write_copy = dallas_ds1992_write_copy,
|
||||
.emulate = dallas_ds1992_emulate,
|
||||
.save = dallas_ds1992_save,
|
||||
@@ -73,10 +73,9 @@ bool dallas_ds1992_read(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
dallas_common_read_mem(host, 0, data->sram_data, DS1992_SRAM_DATA_SIZE);
|
||||
}
|
||||
|
||||
bool dallas_ds1992_write_blank(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
bool dallas_ds1992_write_id(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
DS1992ProtocolData* data = protocol_data;
|
||||
// TODO FL-3532: Make this work, currently broken
|
||||
return tm2004_write(host, (uint8_t*)data, sizeof(DallasCommonRomData) + DS1992_SRAM_DATA_SIZE);
|
||||
return tm2004_write(host, data->rom_data.bytes, sizeof(DallasCommonRomData));
|
||||
}
|
||||
|
||||
bool dallas_ds1992_write_copy(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -20,7 +20,7 @@ typedef struct {
|
||||
} DallasGenericProtocolData;
|
||||
|
||||
static bool ds_generic_read(OneWireHost*, iButtonProtocolData*);
|
||||
static bool ds_generic_write_blank(OneWireHost*, iButtonProtocolData*);
|
||||
static bool ds_generic_write_id(OneWireHost*, iButtonProtocolData*);
|
||||
static void ds_generic_emulate(OneWireSlave*, iButtonProtocolData*);
|
||||
static bool ds_generic_load(FlipperFormat*, uint32_t, iButtonProtocolData*);
|
||||
static bool ds_generic_save(FlipperFormat*, const iButtonProtocolData*);
|
||||
@@ -33,13 +33,13 @@ static void ds_generic_apply_edits(iButtonProtocolData*);
|
||||
|
||||
const iButtonProtocolDallasBase ibutton_protocol_ds_generic = {
|
||||
.family_code = DALLAS_GENERIC_FAMILY_CODE,
|
||||
.features = iButtonProtocolFeatureWriteBlank,
|
||||
.features = iButtonProtocolFeatureWriteId,
|
||||
.data_size = sizeof(DallasGenericProtocolData),
|
||||
.manufacturer = DALLAS_COMMON_MANUFACTURER_NAME,
|
||||
.name = DALLAS_GENERIC_FAMILY_NAME,
|
||||
|
||||
.read = ds_generic_read,
|
||||
.write_blank = ds_generic_write_blank,
|
||||
.write_id = ds_generic_write_id,
|
||||
.write_copy = NULL, /* No data to write a copy */
|
||||
.emulate = ds_generic_emulate,
|
||||
.save = ds_generic_save,
|
||||
@@ -58,7 +58,7 @@ bool ds_generic_read(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
return onewire_host_reset(host) && dallas_common_read_rom(host, &data->rom_data);
|
||||
}
|
||||
|
||||
bool ds_generic_write_blank(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
bool ds_generic_write_id(OneWireHost* host, iButtonProtocolData* protocol_data) {
|
||||
DallasGenericProtocolData* data = protocol_data;
|
||||
return tm2004_write(host, data->rom_data.bytes, sizeof(DallasCommonRomData));
|
||||
}
|
||||
|
||||
@@ -133,13 +133,13 @@ static bool ibutton_protocol_group_dallas_read(
|
||||
return success;
|
||||
}
|
||||
|
||||
static bool ibutton_protocol_group_dallas_write_blank(
|
||||
static bool ibutton_protocol_group_dallas_write_id(
|
||||
iButtonProtocolGroupDallas* group,
|
||||
iButtonProtocolData* data,
|
||||
iButtonProtocolLocalId id) {
|
||||
furi_assert(id < iButtonProtocolDSMax);
|
||||
const iButtonProtocolDallasBase* protocol = ibutton_protocols_dallas[id];
|
||||
furi_assert(protocol->features & iButtonProtocolFeatureWriteBlank);
|
||||
furi_assert(protocol->features & iButtonProtocolFeatureWriteId);
|
||||
|
||||
OneWireHost* host = group->host;
|
||||
|
||||
@@ -148,7 +148,7 @@ static bool ibutton_protocol_group_dallas_write_blank(
|
||||
|
||||
FURI_CRITICAL_ENTER();
|
||||
|
||||
const bool success = protocol->write_blank(host, data);
|
||||
const bool success = protocol->write_id(host, data);
|
||||
onewire_host_stop(host);
|
||||
|
||||
FURI_CRITICAL_EXIT();
|
||||
@@ -307,7 +307,7 @@ const iButtonProtocolGroupBase ibutton_protocol_group_dallas = {
|
||||
.get_name = (iButtonProtocolGroupGetStringFunc)ibutton_protocol_group_dallas_get_name,
|
||||
|
||||
.read = (iButtonProtocolGroupReadFunc)ibutton_protocol_group_dallas_read,
|
||||
.write_blank = (iButtonProtocolGroupWriteFunc)ibutton_protocol_group_dallas_write_blank,
|
||||
.write_id = (iButtonProtocolGroupWriteFunc)ibutton_protocol_group_dallas_write_id,
|
||||
.write_copy = (iButtonProtocolGroupWriteFunc)ibutton_protocol_group_dallas_write_copy,
|
||||
|
||||
.emulate_start = (iButtonProtocolGroupApplyFunc)ibutton_protocol_group_dallas_emulate_start,
|
||||
|
||||
@@ -284,7 +284,7 @@ const iButtonProtocolGroupBase ibutton_protocol_group_misc = {
|
||||
.get_name = (iButtonProtocolGroupGetStringFunc)ibutton_protocol_group_misc_get_name,
|
||||
|
||||
.read = (iButtonProtocolGroupReadFunc)ibutton_protocol_group_misc_read,
|
||||
.write_blank = NULL,
|
||||
.write_id = NULL,
|
||||
.write_copy = NULL,
|
||||
|
||||
.emulate_start = (iButtonProtocolGroupApplyFunc)ibutton_protocol_group_misc_emulate_start,
|
||||
|
||||
@@ -11,7 +11,7 @@ enum {
|
||||
|
||||
typedef enum {
|
||||
iButtonProtocolFeatureExtData = (1U << 0),
|
||||
iButtonProtocolFeatureWriteBlank = (1U << 1),
|
||||
iButtonProtocolFeatureWriteId = (1U << 1),
|
||||
iButtonProtocolFeatureWriteCopy = (1U << 2),
|
||||
} iButtonProtocolFeature;
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ typedef struct {
|
||||
iButtonProtocolGroupGetStringFunc get_name;
|
||||
|
||||
iButtonProtocolGroupReadFunc read;
|
||||
iButtonProtocolGroupWriteFunc write_blank;
|
||||
iButtonProtocolGroupWriteFunc write_id;
|
||||
iButtonProtocolGroupWriteFunc write_copy;
|
||||
|
||||
iButtonProtocolGroupApplyFunc emulate_start;
|
||||
|
||||
Reference in New Issue
Block a user