|
@@ -34,7 +34,7 @@ static void gb_live_camera_view_draw_callback(Canvas* canvas, void* _model) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void get_timefilename(FuriString* name) {
|
|
void get_timefilename(FuriString* name) {
|
|
|
- FuriHalRtcDateTime datetime = {0};
|
|
|
|
|
|
|
+ FuriHalRtcDateTime datetime = {0};
|
|
|
furi_hal_rtc_get_datetime(&datetime);
|
|
furi_hal_rtc_get_datetime(&datetime);
|
|
|
furi_string_printf(
|
|
furi_string_printf(
|
|
|
name,
|
|
name,
|
|
@@ -113,23 +113,27 @@ static bool gb_live_camera_view_input_callback(InputEvent* event, void* context)
|
|
|
if(event->type == InputTypePress) {
|
|
if(event->type == InputTypePress) {
|
|
|
if(event->key == InputKeyUp) {
|
|
if(event->key == InputKeyUp) {
|
|
|
const char gblivecamera_command_enable_dithering[] = "gblivecamera -D\n";
|
|
const char gblivecamera_command_enable_dithering[] = "gblivecamera -D\n";
|
|
|
- furi_hal_serial_tx(instance->serial_handle_uart,
|
|
|
|
|
- (uint8_t*)gblivecamera_command_enable_dithering,
|
|
|
|
|
|
|
+ furi_hal_serial_tx(
|
|
|
|
|
+ instance->serial_handle_uart,
|
|
|
|
|
+ (uint8_t*)gblivecamera_command_enable_dithering,
|
|
|
strlen(gblivecamera_command_enable_dithering));
|
|
strlen(gblivecamera_command_enable_dithering));
|
|
|
} else if(event->key == InputKeyDown) {
|
|
} else if(event->key == InputKeyDown) {
|
|
|
const char gblivecamera_command_disable_dithering[] = "gblivecamera -d\n";
|
|
const char gblivecamera_command_disable_dithering[] = "gblivecamera -d\n";
|
|
|
- furi_hal_serial_tx(instance->serial_handle_uart,
|
|
|
|
|
|
|
+ furi_hal_serial_tx(
|
|
|
|
|
+ instance->serial_handle_uart,
|
|
|
(uint8_t*)gblivecamera_command_disable_dithering,
|
|
(uint8_t*)gblivecamera_command_disable_dithering,
|
|
|
strlen(gblivecamera_command_disable_dithering));
|
|
strlen(gblivecamera_command_disable_dithering));
|
|
|
} else if(event->key == InputKeyRight) {
|
|
} else if(event->key == InputKeyRight) {
|
|
|
const char gblivecamera_command_increase_exposure[] = "gblivecamera -E\n";
|
|
const char gblivecamera_command_increase_exposure[] = "gblivecamera -E\n";
|
|
|
- furi_hal_serial_tx(instance->serial_handle_uart,
|
|
|
|
|
|
|
+ furi_hal_serial_tx(
|
|
|
|
|
+ instance->serial_handle_uart,
|
|
|
(uint8_t*)gblivecamera_command_increase_exposure,
|
|
(uint8_t*)gblivecamera_command_increase_exposure,
|
|
|
strlen(gblivecamera_command_increase_exposure));
|
|
strlen(gblivecamera_command_increase_exposure));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
} else if(event->key == InputKeyLeft) {
|
|
} else if(event->key == InputKeyLeft) {
|
|
|
const char gblivecamera_command_decrease_exposure[] = "gblivecamera -e\n";
|
|
const char gblivecamera_command_decrease_exposure[] = "gblivecamera -e\n";
|
|
|
- furi_hal_serial_tx(instance->serial_handle_uart,
|
|
|
|
|
|
|
+ furi_hal_serial_tx(
|
|
|
|
|
+ instance->serial_handle_uart,
|
|
|
(uint8_t*)gblivecamera_command_decrease_exposure,
|
|
(uint8_t*)gblivecamera_command_decrease_exposure,
|
|
|
strlen(gblivecamera_command_decrease_exposure));
|
|
strlen(gblivecamera_command_decrease_exposure));
|
|
|
} else if(event->key == InputKeyOk) {
|
|
} else if(event->key == InputKeyOk) {
|
|
@@ -140,10 +144,11 @@ static bool gb_live_camera_view_input_callback(InputEvent* event, void* context)
|
|
|
if(!model->initialized) {
|
|
if(!model->initialized) {
|
|
|
// model->initialized = true; // We've successfully established the connection
|
|
// model->initialized = true; // We've successfully established the connection
|
|
|
const char gblivecamera_command[] = "gblivecamera\n\n";
|
|
const char gblivecamera_command[] = "gblivecamera\n\n";
|
|
|
- furi_hal_serial_tx(instance->serial_handle_uart,
|
|
|
|
|
|
|
+ furi_hal_serial_tx(
|
|
|
|
|
+ instance->serial_handle_uart,
|
|
|
(uint8_t*)gblivecamera_command,
|
|
(uint8_t*)gblivecamera_command,
|
|
|
strlen(gblivecamera_command));
|
|
strlen(gblivecamera_command));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
save_image(context);
|
|
save_image(context);
|
|
|
}
|
|
}
|
|
@@ -162,7 +167,10 @@ static uint32_t gb_live_camera_exit(void* context) {
|
|
|
return VIEW_NONE;
|
|
return VIEW_NONE;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static void gb_live_camera_on_irq_cb(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void* context) {
|
|
|
|
|
|
|
+static void gb_live_camera_on_irq_cb(
|
|
|
|
|
+ FuriHalSerialHandle* handle,
|
|
|
|
|
+ FuriHalSerialRxEvent event,
|
|
|
|
|
+ void* context) {
|
|
|
furi_assert(context);
|
|
furi_assert(context);
|
|
|
UartEchoApp* app = context;
|
|
UartEchoApp* app = context;
|
|
|
|
|
|
|
@@ -296,20 +304,16 @@ static UartEchoApp* gb_live_camera_app_alloc() {
|
|
|
furi_delay_ms(5000);
|
|
furi_delay_ms(5000);
|
|
|
}
|
|
}
|
|
|
furi_check(app->serial_handle_uart);
|
|
furi_check(app->serial_handle_uart);
|
|
|
- furi_hal_serial_init(app->serial_handle_uart, BAUDRATE);
|
|
|
|
|
|
|
+ furi_hal_serial_init(app->serial_handle_uart, BAUDRATE);
|
|
|
|
|
|
|
|
app->serial_handle_lp_uart = furi_hal_serial_control_acquire(FuriHalSerialIdLpuart);
|
|
app->serial_handle_lp_uart = furi_hal_serial_control_acquire(FuriHalSerialIdLpuart);
|
|
|
if(!app->serial_handle_lp_uart) {
|
|
if(!app->serial_handle_lp_uart) {
|
|
|
furi_delay_ms(5000);
|
|
furi_delay_ms(5000);
|
|
|
}
|
|
}
|
|
|
furi_check(app->serial_handle_lp_uart);
|
|
furi_check(app->serial_handle_lp_uart);
|
|
|
- furi_hal_serial_init(app->serial_handle_lp_uart, BAUDRATE);
|
|
|
|
|
- furi_hal_serial_async_rx_start(app->serial_handle_lp_uart, gb_live_camera_on_irq_cb, app, false);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ furi_hal_serial_init(app->serial_handle_lp_uart, BAUDRATE);
|
|
|
|
|
+ furi_hal_serial_async_rx_start(
|
|
|
|
|
+ app->serial_handle_lp_uart, gb_live_camera_on_irq_cb, app, false);
|
|
|
|
|
|
|
|
// furi_hal_console_disable();
|
|
// furi_hal_console_disable();
|
|
|
// furi_hal_uart_set_br(FuriHalUartIdUSART1, 115200);
|
|
// furi_hal_uart_set_br(FuriHalUartIdUSART1, 115200);
|
|
@@ -335,7 +339,6 @@ static void gb_live_camera_app_free(UartEchoApp* app) {
|
|
|
furi_hal_serial_deinit(app->serial_handle_lp_uart);
|
|
furi_hal_serial_deinit(app->serial_handle_lp_uart);
|
|
|
furi_hal_serial_control_release(app->serial_handle_lp_uart);
|
|
furi_hal_serial_control_release(app->serial_handle_lp_uart);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
notification_message(app->notification, &sequence_display_backlight_enforce_auto);
|
|
notification_message(app->notification, &sequence_display_backlight_enforce_auto);
|
|
|
// Free views
|
|
// Free views
|
|
|
view_dispatcher_remove_view(app->view_dispatcher, 0);
|
|
view_dispatcher_remove_view(app->view_dispatcher, 0);
|