Add button commands; Update Readme
button.cpp: - Add command: reboot when long button press - Add command: switch to mode JOYSTICK with 3x press Readme: - rework table with switch functions - add new commands to table - add drink holder to planned features joystick.cpp: - fix bug: missing 'break;' for switch case in function joystick_CommandsShaking
This commit is contained in:
parent
3fa2f17a72
commit
1c3576206a
23
README.md
23
README.md
@ -92,21 +92,26 @@ A diagram which shows what components are connected to which terminals of the pc
|
||||
- Anti slip regulation
|
||||
- Self driving algorithm
|
||||
- Lights
|
||||
- drinks holder
|
||||
|
||||
|
||||
|
||||
# Usage
|
||||
## Switch functions
|
||||
**Currently implemented**
|
||||
| Count | Action |
|
||||
| --- | ---|
|
||||
| 1 | |
|
||||
| 2 | toggle IDLE mode |
|
||||
| 3 | |
|
||||
| 4 | toggle between HTTP and JOYSTICK mode|
|
||||
| 5 | |
|
||||
| 6 | toggle between MASSAGE and JOYSTICK mode |
|
||||
| 7 | |
|
||||
| Count | Type | Action | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 1x | configure | [JOYSTICK] **calibrate stick** | when in joystick mode: set joystick center to current joystick pos |
|
||||
| 1x | control | [MASSAGE] **freeze** input | when in massage mode: lock or unlock joystick input at current position |
|
||||
| 2x | toggle mode | **IDLE** <=> previous | enable/disable chair armchair e.g. enable after startup or timeout |
|
||||
| 3x | switch mode | **JOYSTICK** | switch to default mode JOYSTICK |
|
||||
| 4x | toggle mode | **HTTP** <=> JOYSTICK | switch to '**remote control** via web-app' or back to JOYSTICK mode |
|
||||
| 5x | | | |
|
||||
| 6x | toggle mode | **MASSAGE** <=> JOYSTICK | switch to MASSAGE mode or back to JOYSTICK mode |
|
||||
| 7x | | | |
|
||||
| 8x | toggle option | **deceleration limit** | disable/enable deceleration limit (default on) => more responsive |
|
||||
| >1s | system | **restart** | Restart the controller when pressing the button longer than 1 second |
|
||||
|
||||
|
||||
|
||||
**previous functions - not implemented**
|
||||
|
@ -43,14 +43,20 @@ void buttonCommands::action (uint8_t count){
|
||||
buzzer->beep(3, 400, 100);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
//ESP_LOGW(TAG, "RESTART");
|
||||
//buzzer->beep(1,1000,1);
|
||||
//vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
//esp_restart();
|
||||
case 0: //special case when last button press is longer than timeout (>1s)
|
||||
ESP_LOGW(TAG, "RESTART");
|
||||
buzzer->beep(1,1000,1);
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
esp_restart();
|
||||
|
||||
case 1:
|
||||
ESP_LOGW(TAG, "cmd %d: sending button event to control task", count);
|
||||
control->sendButtonEvent(count);
|
||||
control->sendButtonEvent(count); //TODO: always send button event to control task (not just at count=1) -> control.cpp has to be changed
|
||||
break;
|
||||
|
||||
case 3:
|
||||
ESP_LOGW(TAG, "cmd %d: switch to JOYSTICK", count);
|
||||
control->changeMode(controlMode_t::JOYSTICK); //switch to JOYSTICK mode
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@ -123,9 +129,16 @@ void buttonCommands::startHandleLoop() {
|
||||
state = inputState_t::IDLE;
|
||||
buzzer->beep(count, 50, 50);
|
||||
//TODO: add optional "bool wait" parameter to beep function to delay until finished beeping
|
||||
//run action function with current count of button presses
|
||||
ESP_LOGI(TAG, "timeout - running action function for count=%d", count);
|
||||
action(count);
|
||||
//--- run action function ---
|
||||
//check if still pressed
|
||||
if (button->state == true){
|
||||
//run special case when last press was longer than timeout
|
||||
action(0);
|
||||
} else {
|
||||
//run action function with current count of button presses
|
||||
action(count);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -456,6 +456,7 @@ motorCommands_t joystick_generateCommandsShaking(joystickData_t data){
|
||||
stickQuadrant = joystickPos_t::BOTTOM_RIGHT;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case joystickPos_t::X_AXIS:
|
||||
//when moving from center to axis initially start in a certain quadrant
|
||||
@ -480,7 +481,7 @@ motorCommands_t joystick_generateCommandsShaking(joystickData_t data){
|
||||
|
||||
|
||||
|
||||
//--- handle different modes (joystich in any of 4 quadrants) ---
|
||||
//--- handle different modes (joystick in any of 4 quadrants) ---
|
||||
switch (stickQuadrant){
|
||||
case joystickPos_t::CENTER:
|
||||
case joystickPos_t::X_AXIS: //never true
|
||||
|
Loading…
x
Reference in New Issue
Block a user