Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FL-1891] Release 0.42 bugfixes #891

Merged
merged 7 commits into from
Dec 12, 2021
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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, 48 - 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