OFW PR 2658: Hitag

by blackvault88
This commit is contained in:
MX
2023-05-17 21:18:05 +03:00
parent d620285e0a
commit c9ddecff87
21 changed files with 2893 additions and 47 deletions

View File

@@ -11,6 +11,7 @@ struct LfRfidReadView {
typedef struct {
IconAnimation* icon;
LfRfidReadViewMode read_mode;
LfRfidReadViewState read_state;
} LfRfidReadViewModel;
static void lfrfid_view_read_draw_callback(Canvas* canvas, void* _model) {
@@ -22,36 +23,69 @@ static void lfrfid_view_read_draw_callback(Canvas* canvas, void* _model) {
canvas_set_font(canvas, FontPrimary);
if(model->read_mode == LfRfidReadAsk) {
canvas_draw_str(canvas, 70, 16, "Reading 1/2");
canvas_draw_str(canvas, 70, 8, "Reading 1/3");
canvas_draw_str(canvas, 77, 29, "ASK");
canvas_draw_icon(canvas, 70, 22, &I_ButtonRight_4x7);
canvas_draw_icon_animation(canvas, 102, 21, model->icon);
canvas_draw_str(canvas, 77, 20, "ASK");
canvas_draw_icon(canvas, 70, 13, &I_ButtonRight_4x7);
canvas_draw_icon_animation(canvas, 112, 12, model->icon);
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 77, 43, "PSK");
canvas_draw_str(canvas, 77, 33, "PSK");
canvas_draw_str(canvas, 77, 46, "RTF");
} else if(model->read_mode == LfRfidReadPsk) {
canvas_draw_str(canvas, 70, 16, "Reading 2/2");
canvas_draw_str(canvas, 70, 8, "Reading 2/3");
canvas_draw_str(canvas, 77, 43, "PSK");
canvas_draw_icon(canvas, 70, 36, &I_ButtonRight_4x7);
canvas_draw_icon_animation(canvas, 102, 35, model->icon);
canvas_draw_str(canvas, 77, 33, "PSK");
canvas_draw_icon(canvas, 70, 26, &I_ButtonRight_4x7);
canvas_draw_icon_animation(canvas, 112, 25, model->icon);
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 77, 29, "ASK");
} else {
canvas_draw_str(canvas, 72, 16, "Reading");
canvas_draw_str(canvas, 77, 20, "ASK");
canvas_draw_str(canvas, 77, 46, "RTF");
} else if(model->read_mode == LfRfidReadHitag) {
if(model->read_state == LfRfidReadScanning) {
canvas_draw_str(canvas, 70, 8, "Reading 3/3");
if(model->read_mode == LfRfidReadAskOnly) {
canvas_draw_str(canvas, 77, 35, "ASK");
} else {
canvas_draw_str(canvas, 77, 35, "PSK");
canvas_draw_str(canvas, 77, 46, "RTF");
canvas_draw_icon(canvas, 70, 39, &I_ButtonRight_4x7);
canvas_draw_icon_animation(canvas, 112, 38, model->icon);
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 77, 20, "ASK");
canvas_draw_str(canvas, 77, 33, "PSK");
} else if(model->read_state == LfRfidReadTagDetected) { //TODO switch to other scene?
canvas_draw_str(canvas, 65, 8, "Hitag1 found");
canvas_set_font(canvas, FontSecondary);
//canvas_draw_str(canvas, 70, 20, "## ## ## ##"); //TODO get tag SN from hitag worker
canvas_draw_str(canvas, 70, 33, "Reading data");
//canvas_draw_str(canvas, 70, 46, "Page: X/64"); //TODO get current page index from hitag worker
}
} else if(model->read_mode == LfRfidReadAskOnly) {
canvas_draw_str(canvas, 72, 16, "Reading");
canvas_draw_str(canvas, 77, 35, "ASK");
canvas_draw_icon_animation(canvas, 112, 27, model->icon);
} else if(model->read_mode == LfRfidReadPskOnly) {
canvas_draw_str(canvas, 72, 16, "Reading");
canvas_draw_str(canvas, 77, 35, "PSK");
canvas_draw_icon_animation(canvas, 112, 27, model->icon);
} else if(model->read_mode == LfRfidReadRtfOnly) {
if(model->read_state == LfRfidReadScanning) {
canvas_draw_str(canvas, 72, 16, "Reading");
canvas_draw_str(canvas, 77, 35, "RTF");
canvas_draw_icon_animation(canvas, 112, 27, model->icon);
} else if(model->read_state == LfRfidReadTagDetected) { //TODO switch to other scene?
canvas_draw_str(canvas, 65, 8, "Hitag1 found");
canvas_set_font(canvas, FontSecondary);
//canvas_draw_str(canvas, 70, 20, "## ## ## ##"); //TODO get tag SN from hitag worker
canvas_draw_str(canvas, 70, 33, "Reading data");
//canvas_draw_str(canvas, 70, 46, "Page: X/64"); //TODO get current page index from hitag worker
}
canvas_draw_icon_animation(canvas, 102, 27, model->icon);
}
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 61, 56, "Don't move card");
canvas_draw_str(canvas, 61, 60, "Don't move card");
}
void lfrfid_view_read_enter(void* context) {
@@ -111,3 +145,8 @@ void lfrfid_view_read_set_read_mode(LfRfidReadView* read_view, LfRfidReadViewMod
},
true);
}
void lfrfid_view_read_set_read_state(LfRfidReadView* read_view, LfRfidReadViewState state) {
with_view_model(
read_view->view, LfRfidReadViewModel * model, { model->read_state = state; }, true);
}