Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…irmware into mntm-dev
  • Loading branch information
Willy-JL committed Apr 9, 2024
2 parents 798a65d + db14ca9 commit ff8210b
Show file tree
Hide file tree
Showing 14 changed files with 430 additions and 9 deletions.
1 change: 1 addition & 0 deletions applications/drivers/subghz/cc1101_ext/cc1101_ext.c
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,7 @@ void subghz_device_cc1101_ext_rx(void) {
// Go GDO2 (!TX/RX) to high (RX state)
cc1101_write_reg(
subghz_device_cc1101_ext->spi_bus_handle, CC1101_IOCFG2, CC1101IocfgHW | CC1101_IOCFG_INV);

furi_hal_spi_release(subghz_device_cc1101_ext->spi_bus_handle);
if(subghz_device_cc1101_ext->power_amp) {
furi_hal_gpio_write(SUBGHZ_DEVICE_CC1101_EXT_E07M20S_AMP_GPIO, 0);
Expand Down
8 changes: 2 additions & 6 deletions applications/services/loader/loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ void loader_start_detached_with_gui_error(Loader* loader, const char* name, cons

LoaderMessage message = {
.type = LoaderMessageTypeStartByNameDetachedWithGuiError,
.start.name = name ? strdup(name) : NULL,
.start.name = strdup(name),
.start.args = args ? strdup(args) : NULL,
};
furi_message_queue_put(loader->queue, &message, FuriWaitForever);
Expand Down Expand Up @@ -210,11 +210,7 @@ static void loader_thread_state_callback(FuriThreadState thread_state, void* con

Loader* loader = context;

if(thread_state == FuriThreadStateRunning) {
LoaderEvent event;
event.type = LoaderEventTypeApplicationStarted;
furi_pubsub_publish(loader->pubsub, &event);
} else if(thread_state == FuriThreadStateStopped) {
if(thread_state == FuriThreadStateStopped) {
LoaderMessage message;
message.type = LoaderMessageTypeAppClosed;
furi_message_queue_put(loader->queue, &message, FuriWaitForever);
Expand Down
1 change: 0 additions & 1 deletion applications/services/loader/loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ typedef enum {
typedef enum {
LoaderEventTypeApplicationBeforeLoad,
LoaderEventTypeApplicationLoadFailed,
LoaderEventTypeApplicationStarted,
LoaderEventTypeApplicationStopped
} LoaderEventType;

Expand Down
1 change: 1 addition & 0 deletions documentation/JavaScript.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# JavaScript scripting API (WIP)
## Note: This documentation is still work in progress!
Todo:
- Migrate to new format from OFW (see /documentation/js/ folder)
- Add missing parameters & returns (Dialog and lower)

## Description
Expand Down
1 change: 1 addition & 0 deletions documentation/doxygen/index.dox
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ The documentation is divided into several sections, with all of them accessible
- @ref dev_tools - Hardware and software tools for all kinds of programming
- @ref expansion - Additional modules to expand Flipper's consciousness
- @ref misc - Various useful pieces of information
- @ref js - JS-based scripting engine documentation

Aside from the manually-written documentation files, there's also a few automatically-generated ones at the bottom of the sidebar:

Expand Down
18 changes: 18 additions & 0 deletions documentation/doxygen/js.dox
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
@page js JavaScript

This page contains some information on the Flipper Zero scripting engine, which is based on a modified mJS library

- [Brief mJS description](https://github.com/cesanta/mjs/blob/master/README.md)
- @subpage js_data_types
- @subpage js_builtin

JavaScript Modules
JS modules use the Flipper app plugin system. Each module is compiled into a .fal library file and is located on a microSD card. Here is a list of implemented modules:

- @subpage js_badusb - BadUSB module
- @subpage js_serial - Serial module
- @subpage js_dialog - Dialog module
- @subpage js_notification - Notifications module

*/
144 changes: 144 additions & 0 deletions documentation/js/js_badusb.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# js_badusb {#js_badusb}

# BadUSB module
```js
let badusb = require("badusb");
```
# Methods
## setup
Start USB HID with optional parameters. Should be called before all other methods.

### Parameters
Configuration object (optional):
- vid, pid (number): VID and PID values, both are mandatory
- mfr_name (string): Manufacturer name (32 ASCII characters max), optional
- prod_name (string): Product name (32 ASCII characters max), optional

### Examples:
```js
// Start USB HID with default parameters
badusb.setup();
// Start USB HID with custom vid:pid = AAAA:BBBB, manufacturer and product strings not defined
badusb.setup({ vid: 0xAAAA, pid: 0xBBBB });
// Start USB HID with custom vid:pid = AAAA:BBBB, manufacturer string = "Flipper Devices", product string = "Flipper Zero"
badusb.setup({ vid: 0xAAAA, pid: 0xBBBB, mfr_name: "Flipper Devices", prod_name: "Flipper Zero" });
```

## isConnected
Returns USB connection state.

### Example:
```js
if (badusb.isConnected()) {
// Do something
} else {
// Show an error
}
```

## press
Press and release a key.

### Parameters
Key or modifier name, key code.

See a list of key names below.

### Examples:
```js
badusb.press("a"); // Press "a" key
badusb.press("A"); // SHIFT + "a"
badusb.press("CTRL", "a"); // CTRL + "a"
badusb.press("CTRL", "SHIFT", "ESC"); // CTRL + SHIFT + ESC combo
badusb.press(98); // Press key with HID code (dec) 98 (Numpad 0 / Insert)
badusb.press(0x47); // Press key with HID code (hex) 0x47 (Scroll lock)
```

## hold
Hold a key. Up to 5 keys (excluding modifiers) can be held simultaneously.

### Parameters
Same as `press`

### Examples:
```js
badusb.hold("a"); // Press and hold "a" key
badusb.hold("CTRL", "v"); // Press and hold CTRL + "v" combo
```

## release
Release a previously hold key.

### Parameters
Same as `press`

Release all keys if called without parameters

### Examples:
```js
badusb.release(); // Release all keys
badusb.release("a"); // Release "a" key
```

## print
Print a string.

### Parameters
- A string to print
- (optional) delay between key presses

### Examples:
```js
badusb.print("Hello, world!"); // print "Hello, world!"
badusb.print("Hello, world!", 100); // Add 100ms delay between key presses
```

## println
Same as `print` but ended with "ENTER" press.

### Parameters
- A string to print
- (optional) delay between key presses

### Examples:
```js
badusb.println("Hello, world!"); // print "Hello, world!" and press "ENTER"
```

# Key names list

## Modifier keys

| Name |
| ------------- |
| CTRL |
| SHIFT |
| ALT |
| GUI |

## Special keys

| Name | Notes |
| ------------------ | ---------------- |
| DOWN | Down arrow |
| LEFT | Left arrow |
| RIGHT | Right arrow |
| UP | Up arrow |
| ENTER | |
| DELETE | |
| BACKSPACE | |
| END | |
| HOME | |
| ESC | |
| INSERT | |
| PAGEUP | |
| PAGEDOWN | |
| CAPSLOCK | |
| NUMLOCK | |
| SCROLLLOCK | |
| PRINTSCREEN | |
| PAUSE | Pause/Break key |
| SPACE | |
| TAB | |
| MENU | Context menu key |
| Fx | F1-F24 keys |
56 changes: 56 additions & 0 deletions documentation/js/js_builtin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Built-in methods {#js_builtin}

## require
Load a module plugin.

### Parameters
- Module name

### Examples:
```js
let serial = require("serial"); // Load "serial" module
```

## delay
### Parameters
- Delay value in ms

### Examples:
```js
delay(500); // Delay for 500ms
```
## print
Print a message on a screen console.

### Parameters
The following argument types are supported:
- String
- Number
- Bool
- undefined

### Examples:
```js
print("string1", "string2", 123);
```

## console.log
## console.warn
## console.error
## console.debug
Same as `print`, but output to serial console only, with corresponding log level.

## to_string
Convert a number to string.

### Examples:
```js
to_string(123)
```
## to_hex_string
Convert a number to string(hex format).

### Examples:
```js
to_hex_string(0xFF)
```
13 changes: 13 additions & 0 deletions documentation/js/js_data_types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Data types {#js_data_types}

Here is a list of common data types used by mJS.
- string - sequence of single byte characters, no UTF8 support
- number
- boolean
- foreign - C function or data pointer
- undefined
- null
- object - a data structure with named fields
- array - special type of object, all items have indexes and equal types
- ArrayBuffer - raw data buffer
- DataView - provides interface for accessing ArrayBuffer contents
49 changes: 49 additions & 0 deletions documentation/js/js_dialog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# js_dialog {#js_dialog}

# Dialog module
```js
let dialog = require("dialog");
```
# Methods

## message
Show a simple message dialog with header, text and "OK" button.

### Parameters
- Dialog header text
- Dialog text

### Retuns
true if central button was pressed, false if the dialog was closed by back key press

### Examples:
```js
dialog.message("Dialog demo", "Press OK to start");
```

## custom
More complex dialog with configurable buttons

### Parameters
Configuration object with the following fileds:
- header: Dialog header text
- text: Dialog text
- button_left: (optional) left button name
- button_right: (optional) right button name
- button_center: (optional) central button name

### Retuns
Name of pressed button or empty string if the dialog was closed by back key press

### Examples:
```js
let dialog_params = ({
header: "Dialog header",
text: "Dialog text",
button_left: "Left",
button_right: "Right",
button_center: "OK"
});

dialog.custom(dialog_params);
```
36 changes: 36 additions & 0 deletions documentation/js/js_notification.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# js_notification {#js_notification}

# Notification module
```js
let notify = require("notification");
```
# Methods

## success
"Success" flipper notification message

### Examples:
```js
notify.success();
```

## error
"Error" flipper notification message

### Examples:
```js
notify.error();
```

## blink
Blink notification LED

### Parameters
- Blink color (blue/red/green/yellow/cyan/magenta)
- Blink type (short/long)

### Examples:
```js
notify.blink("red", "short"); // Short blink of red LED
notify.blink("green", "short"); // Long blink of green LED
```
Loading

0 comments on commit ff8210b

Please sign in to comment.