Skip to content

Commit

Permalink
[FL-1891] Release 0.42 bugfixes (flipperdevices#891)
Browse files Browse the repository at this point in the history
* Fixed the "ibutton can only emulate after reading" bug
* Fixed previous fix. FIXES FOR THE FIX GOD! BUGS FOR THE BUG THRONE!
* Fixed "Repeat code" position on code input screen
* Changed CAME protocol icon
* Brewfile: add imagemagick missing assets compiler dependency
* Correct fix for "Repeat code" position on code input screen

Co-authored-by: Aleksandr Kutuzov <[email protected]>
  • Loading branch information
DrZlo13 and skotopes authored Dec 12, 2021
1 parent 195f422 commit 58ce937
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 10 deletions.
3 changes: 2 additions & 1 deletion Brewfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ brew "protobuf"
brew "heatshrink"
brew "open-ocd"
brew "clang-format"
brew "dfu-util"
brew "dfu-util"
brew "imagemagick"
2 changes: 1 addition & 1 deletion applications/gui/modules/code_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ static void code_input_view_draw_callback(Canvas* canvas, void* _model) {
44 + y_offset,
model->current);

if(model->current) canvas_draw_str(canvas, 2, 39 - y_offset, "Repeat code");
if(model->current) canvas_draw_str(canvas, 2, 39 + y_offset, "Repeat code");

break;
default:
Expand Down
4 changes: 4 additions & 0 deletions applications/ibutton/helpers/key-emulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ void KeyEmulator::start(iButtonKey* key) {
anything_emulated = false;
stop();

// pulldown pull pin, to prevent low-pass filtering by the RFID part of the schematic
furi_hal_rfid_pin_pull_pulldown();

switch(key->get_key_type()) {
case iButtonKeyType::KeyDallas:
start_dallas_emulate(key);
Expand Down Expand Up @@ -44,6 +47,7 @@ bool KeyEmulator::emulated() {
void KeyEmulator::stop() {
onewire_slave->stop();
pulser.stop();
furi_hal_rfid_pins_reset();
}

void KeyEmulator::start_cyfral_emulate(iButtonKey* key) {
Expand Down
13 changes: 8 additions & 5 deletions applications/ibutton/helpers/key-reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,10 @@ bool KeyReader::verify_key(iButtonKeyType key_type, const uint8_t* const data, u
}

void KeyReader::start_comaparator(void) {
// pulldown lf-rfid pins to prevent interference
hal_gpio_init(&gpio_rfid_pull, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
hal_gpio_write(&gpio_rfid_pull, false);
furi_hal_rfid_pins_reset();

hal_gpio_init(&gpio_rfid_carrier_out, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
hal_gpio_write(&gpio_rfid_carrier_out, false);
// pulldown pull pin, we sense the signal through the analog part of the RFID schematic
furi_hal_rfid_pin_pull_pulldown();

comparator_callback_pointer =
cbc::obtain_connector(this, &KeyReader::comparator_trigger_callback);
Expand All @@ -130,6 +128,11 @@ void KeyReader::start_comaparator(void) {
}

void KeyReader::stop_comaparator(void) {
furi_hal_rfid_pins_reset();

// rfid_pins_reset will disable ibutton pin
furi_hal_ibutton_start();

HAL_COMP_Stop(&hcomp1);
api_interrupt_remove(comparator_callback_pointer, InterruptTypeComparatorTrigger);
}
Expand Down
2 changes: 1 addition & 1 deletion applications/ibutton/helpers/pulse-sequencer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ void PulseSequencer::init_timer(uint32_t period) {

HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);

hal_gpio_init(&ibutton_gpio, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedLow);
hal_gpio_init(&ibutton_gpio, GpioModeOutputOpenDrain, GpioPullNo, GpioSpeedVeryHigh);
}

void PulseSequencer::deinit_timer() {
Expand Down
4 changes: 3 additions & 1 deletion applications/lfrfid/helpers/rfid-writer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ void RfidWriter::start() {
furi_hal_rfid_tim_read(125000, 0.5);
furi_hal_rfid_pins_read();
furi_hal_rfid_tim_read_start();
hal_gpio_write(&gpio_rfid_pull, true);

// do not ground the antenna
furi_hal_rfid_pin_pull_release();
}

void RfidWriter::stop() {
Expand Down
8 changes: 8 additions & 0 deletions firmware/targets/f6/furi-hal/furi-hal-rfid.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ void furi_hal_rfid_pins_read() {
hal_gpio_init(&gpio_rfid_data_in, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
}

void furi_hal_rfid_pin_pull_release() {
hal_gpio_write(&gpio_rfid_pull, true);
}

void furi_hal_rfid_pin_pull_pulldown() {
hal_gpio_write(&gpio_rfid_pull, false);
}

void furi_hal_rfid_tim_read(float freq, float duty_cycle) {
// TODO LL init
uint32_t period = (uint32_t)((SystemCoreClock) / freq) - 1;
Expand Down
8 changes: 8 additions & 0 deletions firmware/targets/f7/furi-hal/furi-hal-rfid.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ void furi_hal_rfid_pins_read() {
hal_gpio_init(&gpio_rfid_data_in, GpioModeAnalog, GpioPullNo, GpioSpeedLow);
}

void furi_hal_rfid_pin_pull_release() {
hal_gpio_write(&gpio_rfid_pull, true);
}

void furi_hal_rfid_pin_pull_pulldown() {
hal_gpio_write(&gpio_rfid_pull, false);
}

void furi_hal_rfid_tim_read(float freq, float duty_cycle) {
// TODO LL init
uint32_t period = (uint32_t)((SystemCoreClock) / freq) - 1;
Expand Down
8 changes: 8 additions & 0 deletions firmware/targets/furi-hal-include/furi-hal-rfid.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ void furi_hal_rfid_pins_emulate();
*/
void furi_hal_rfid_pins_read();

/** Release rfid pull pin
*/
void furi_hal_rfid_pin_pull_release();

/** Pulldown rfid pull pin
*/
void furi_hal_rfid_pin_pull_pulldown();

/** Config rfid timer to read state
*
* @param freq timer frequency
Expand Down
2 changes: 1 addition & 1 deletion lib/subghz/protocols/subghz_protocol_came_atomo.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ SubGhzProtocolCameAtomo* subghz_protocol_came_atomo_alloc() {
instance->common.te_short = 600;
instance->common.te_long = 1200;
instance->common.te_delta = 250;
instance->common.type_protocol = SubGhzProtocolCommonTypeStatic;
instance->common.type_protocol = SubGhzProtocolCommonTypeDynamic;
instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_came_atomo_to_str;
instance->common.to_load_protocol =
(SubGhzProtocolCommonLoadFromRAW)subghz_decoder_came_atomo_to_load_protocol;
Expand Down

0 comments on commit 58ce937

Please sign in to comment.