mirror of https://github.com/arendst/Tasmota.git
New shutter commands ShutterToggle, ShutterStopOpen, ShutterStopClose, ShutterStopToggle, ShutterStopPosition
ShutterToggle opens shutter when actual shutterposition <=50 and closes otherwise. ShutterStopXxx commands will stop shutter when shutter is currently moving and will be same as ShutterXxx otherwise.
This commit is contained in:
parent
ac06abffe8
commit
771f53ddcd
|
@ -535,10 +535,13 @@
|
||||||
#define D_PRFX_SHUTTER "Shutter"
|
#define D_PRFX_SHUTTER "Shutter"
|
||||||
#define D_CMND_SHUTTER_OPEN "Open"
|
#define D_CMND_SHUTTER_OPEN "Open"
|
||||||
#define D_CMND_SHUTTER_CLOSE "Close"
|
#define D_CMND_SHUTTER_CLOSE "Close"
|
||||||
|
#define D_CMND_SHUTTER_TOGGLE "Toggle"
|
||||||
#define D_CMND_SHUTTER_UP "Up"
|
#define D_CMND_SHUTTER_UP "Up"
|
||||||
#define D_CMND_SHUTTER_DOWN "Down"
|
#define D_CMND_SHUTTER_DOWN "Down"
|
||||||
#define D_CMND_SHUTTER_TOGGLEUP "ToggleUp"
|
#define D_CMND_SHUTTER_STOPOPEN "StopOpen"
|
||||||
#define D_CMND_SHUTTER_TOGGLEDOWN "ToggleDown"
|
#define D_CMND_SHUTTER_STOPCLOSE "StopClose"
|
||||||
|
#define D_CMND_SHUTTER_STOPTOGGLE "StopToggle"
|
||||||
|
#define D_CMND_SHUTTER_STOPPOSITION "StopPosition"
|
||||||
#define D_CMND_SHUTTER_STOP "Stop"
|
#define D_CMND_SHUTTER_STOP "Stop"
|
||||||
#define D_CMND_SHUTTER_POSITION "Position"
|
#define D_CMND_SHUTTER_POSITION "Position"
|
||||||
#define D_CMND_SHUTTER_OPENTIME "OpenDuration"
|
#define D_CMND_SHUTTER_OPENTIME "OpenDuration"
|
||||||
|
|
|
@ -1266,7 +1266,7 @@ bool HandleRootStatusRefresh(void)
|
||||||
#ifdef USE_SHUTTER
|
#ifdef USE_SHUTTER
|
||||||
int32_t ShutterWebButton;
|
int32_t ShutterWebButton;
|
||||||
if (ShutterWebButton = IsShutterWebButton(device)) {
|
if (ShutterWebButton = IsShutterWebButton(device)) {
|
||||||
snprintf_P(svalue, sizeof(svalue), PSTR("ShutterPosition%d %s"), abs(ShutterWebButton), (ShutterWebButton>0) ? PSTR(D_CMND_SHUTTER_TOGGLEUP) : PSTR(D_CMND_SHUTTER_TOGGLEDOWN));
|
snprintf_P(svalue, sizeof(svalue), PSTR("ShutterPosition%d %s"), abs(ShutterWebButton), (ShutterWebButton>0) ? PSTR(D_CMND_SHUTTER_STOPOPEN) : PSTR(D_CMND_SHUTTER_STOPCLOSE));
|
||||||
ExecuteWebCommand(svalue, SRC_WEBGUI);
|
ExecuteWebCommand(svalue, SRC_WEBGUI);
|
||||||
} else {
|
} else {
|
||||||
#endif // USE_SHUTTER
|
#endif // USE_SHUTTER
|
||||||
|
|
|
@ -37,16 +37,18 @@ enum ShutterModes { SHT_OFF_OPEN__OFF_CLOSE, SHT_OFF_ON__OPEN_CLOSE, SHT_PULSE_O
|
||||||
enum ShutterButtonStates { SHT_NOT_PRESSED, SHT_PRESSED_MULTI, SHT_PRESSED_HOLD, SHT_PRESSED_IMMEDIATE, SHT_PRESSED_EXT_HOLD, SHT_PRESSED_MULTI_SIMULTANEOUS, SHT_PRESSED_HOLD_SIMULTANEOUS, SHT_PRESSED_EXT_HOLD_SIMULTANEOUS,};
|
enum ShutterButtonStates { SHT_NOT_PRESSED, SHT_PRESSED_MULTI, SHT_PRESSED_HOLD, SHT_PRESSED_IMMEDIATE, SHT_PRESSED_EXT_HOLD, SHT_PRESSED_MULTI_SIMULTANEOUS, SHT_PRESSED_HOLD_SIMULTANEOUS, SHT_PRESSED_EXT_HOLD_SIMULTANEOUS,};
|
||||||
|
|
||||||
const char kShutterCommands[] PROGMEM = D_PRFX_SHUTTER "|"
|
const char kShutterCommands[] PROGMEM = D_PRFX_SHUTTER "|"
|
||||||
D_CMND_SHUTTER_OPEN "|" D_CMND_SHUTTER_CLOSE "|" D_CMND_SHUTTER_STOP "|" D_CMND_SHUTTER_POSITION "|"
|
D_CMND_SHUTTER_OPEN "|" D_CMND_SHUTTER_CLOSE "|" D_CMND_SHUTTER_TOGGLE "|" D_CMND_SHUTTER_STOP "|" D_CMND_SHUTTER_POSITION "|"
|
||||||
D_CMND_SHUTTER_OPENTIME "|" D_CMND_SHUTTER_CLOSETIME "|" D_CMND_SHUTTER_RELAY "|"
|
D_CMND_SHUTTER_OPENTIME "|" D_CMND_SHUTTER_CLOSETIME "|" D_CMND_SHUTTER_RELAY "|"
|
||||||
D_CMND_SHUTTER_SETHALFWAY "|" D_CMND_SHUTTER_SETCLOSE "|" D_CMND_SHUTTER_INVERT "|" D_CMND_SHUTTER_CLIBRATION "|"
|
D_CMND_SHUTTER_SETHALFWAY "|" D_CMND_SHUTTER_SETCLOSE "|" D_CMND_SHUTTER_INVERT "|" D_CMND_SHUTTER_CLIBRATION "|"
|
||||||
D_CMND_SHUTTER_MOTORDELAY "|" D_CMND_SHUTTER_FREQUENCY "|" D_CMND_SHUTTER_BUTTON "|" D_CMND_SHUTTER_LOCK "|" D_CMND_SHUTTER_ENABLEENDSTOPTIME "|" D_CMND_SHUTTER_INVERTWEBBUTTONS;
|
D_CMND_SHUTTER_MOTORDELAY "|" D_CMND_SHUTTER_FREQUENCY "|" D_CMND_SHUTTER_BUTTON "|" D_CMND_SHUTTER_LOCK "|" D_CMND_SHUTTER_ENABLEENDSTOPTIME "|" D_CMND_SHUTTER_INVERTWEBBUTTONS "|"
|
||||||
|
D_CMND_SHUTTER_STOPOPEN "|" D_CMND_SHUTTER_STOPCLOSE "|" D_CMND_SHUTTER_STOPTOGGLE "|" D_CMND_SHUTTER_STOPPOSITION;
|
||||||
|
|
||||||
void (* const ShutterCommand[])(void) PROGMEM = {
|
void (* const ShutterCommand[])(void) PROGMEM = {
|
||||||
&CmndShutterOpen, &CmndShutterClose, &CmndShutterStop, &CmndShutterPosition,
|
&CmndShutterOpen, &CmndShutterClose, &CmndShutterToggle, &CmndShutterStop, &CmndShutterPosition,
|
||||||
&CmndShutterOpenTime, &CmndShutterCloseTime, &CmndShutterRelay,
|
&CmndShutterOpenTime, &CmndShutterCloseTime, &CmndShutterRelay,
|
||||||
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
&CmndShutterSetHalfway, &CmndShutterSetClose, &CmndShutterInvert, &CmndShutterCalibration , &CmndShutterMotorDelay,
|
||||||
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime, &CmndShutterInvertWebButtons};
|
&CmndShutterFrequency, &CmndShutterButton, &CmndShutterLock, &CmndShutterEnableEndStopTime, &CmndShutterInvertWebButtons,
|
||||||
|
&CmndShutterStopOpen, &CmndShutterStopClose, &CmndShutterStopToggle, &CmndShutterStopPosition};
|
||||||
|
|
||||||
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d}";
|
const char JSON_SHUTTER_POS[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Position\":%d,\"Direction\":%d,\"Target\":%d}";
|
||||||
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
const char JSON_SHUTTER_BUTTON[] PROGMEM = "\"" D_PRFX_SHUTTER "%d\":{\"Button%d\":%d}";
|
||||||
|
@ -677,7 +679,13 @@ void ShutterButtonHandler(void)
|
||||||
CmndShutterStop();
|
CmndShutterStop();
|
||||||
} else {
|
} else {
|
||||||
XdrvMailbox.payload = position = (position-1)<<1;
|
XdrvMailbox.payload = position = (position-1)<<1;
|
||||||
CmndShutterPosition();
|
//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: shutter %d -> %d"), shutter_index+1, position);
|
||||||
|
if (102 == position) {
|
||||||
|
XdrvMailbox.payload = XdrvMailbox.index;
|
||||||
|
CmndShutterToggle();
|
||||||
|
} else {
|
||||||
|
CmndShutterPosition();
|
||||||
|
}
|
||||||
if (Settings.shutter_button[button_index] & ((0x01<<26)<<pos_press_index)) {
|
if (Settings.shutter_button[button_index] & ((0x01<<26)<<pos_press_index)) {
|
||||||
// MQTT broadcast to grouptopic
|
// MQTT broadcast to grouptopic
|
||||||
char scommand[CMDSZ];
|
char scommand[CMDSZ];
|
||||||
|
@ -701,7 +709,6 @@ void ShutterButtonHandler(void)
|
||||||
ResponseJsonEnd();
|
ResponseJsonEnd();
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_PRFX_SHUTTER));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_PRFX_SHUTTER));
|
||||||
XdrvRulesProcess();
|
XdrvRulesProcess();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +725,7 @@ void ShutterSetPosition(uint32_t device, uint32_t position)
|
||||||
|
|
||||||
void CmndShutterOpen(void)
|
void CmndShutterOpen(void)
|
||||||
{
|
{
|
||||||
//AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Payload close: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.i);
|
//AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Payload open: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index);
|
||||||
if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) {
|
if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) {
|
||||||
XdrvMailbox.index = XdrvMailbox.payload;
|
XdrvMailbox.index = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
|
@ -727,9 +734,21 @@ void CmndShutterOpen(void)
|
||||||
CmndShutterPosition();
|
CmndShutterPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CmndShutterStopOpen(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
uint32_t index = XdrvMailbox.index-1;
|
||||||
|
if (Shutter.direction[index]) {
|
||||||
|
CmndShutterStop();
|
||||||
|
} else {
|
||||||
|
CmndShutterOpen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CmndShutterClose(void)
|
void CmndShutterClose(void)
|
||||||
{
|
{
|
||||||
//AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Payload open: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.i);
|
//AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Payload close: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index);
|
||||||
if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) {
|
if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) {
|
||||||
XdrvMailbox.index = XdrvMailbox.payload;
|
XdrvMailbox.index = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
|
@ -739,6 +758,45 @@ void CmndShutterClose(void)
|
||||||
CmndShutterPosition();
|
CmndShutterPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CmndShutterStopClose(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
uint32_t index = XdrvMailbox.index-1;
|
||||||
|
if (Shutter.direction[index]) {
|
||||||
|
CmndShutterStop();
|
||||||
|
} else {
|
||||||
|
CmndShutterClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndShutterToggle(void)
|
||||||
|
{
|
||||||
|
//AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Payload toggle: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index);
|
||||||
|
if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) {
|
||||||
|
XdrvMailbox.index = XdrvMailbox.payload;
|
||||||
|
}
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
uint32_t index = XdrvMailbox.index-1;
|
||||||
|
XdrvMailbox.payload = (50 < ShutterRealToPercentPosition(Shutter.real_position[index], index)) ? 0 : 100;
|
||||||
|
XdrvMailbox.data_len = 0;
|
||||||
|
last_source = SRC_WEBGUI;
|
||||||
|
CmndShutterPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmndShutterStopToggle(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
uint32_t index = XdrvMailbox.index-1;
|
||||||
|
if (Shutter.direction[index]) {
|
||||||
|
CmndShutterStop();
|
||||||
|
} else {
|
||||||
|
CmndShutterToggle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CmndShutterStop(void)
|
void CmndShutterStop(void)
|
||||||
{
|
{
|
||||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
@ -779,15 +837,15 @@ void CmndShutterPosition(void)
|
||||||
// special handling fo UP,DOWN,TOGGLE,STOP command comming with payload -99
|
// special handling fo UP,DOWN,TOGGLE,STOP command comming with payload -99
|
||||||
if ((XdrvMailbox.data_len > 1) && (XdrvMailbox.payload <= 0)) {
|
if ((XdrvMailbox.data_len > 1) && (XdrvMailbox.payload <= 0)) {
|
||||||
//UpperCase(XdrvMailbox.data, XdrvMailbox.data);
|
//UpperCase(XdrvMailbox.data, XdrvMailbox.data);
|
||||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_UP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_OPEN) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEUP))) {
|
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_UP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_OPEN) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOPOPEN))) {
|
||||||
CmndShutterOpen();
|
CmndShutterOpen();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_DOWN) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_CLOSE) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEDOWN))) {
|
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_DOWN) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_CLOSE) || ((Shutter.direction[index]==0) && !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOPCLOSE))) {
|
||||||
CmndShutterClose();
|
CmndShutterClose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOP) || ((Shutter.direction[index]) && (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEUP) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_TOGGLEDOWN)))) {
|
if (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOP) || ((Shutter.direction[index]) && (!strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOPOPEN) || !strcasecmp(XdrvMailbox.data,D_CMND_SHUTTER_STOPCLOSE)))) {
|
||||||
XdrvMailbox.payload = -99;
|
XdrvMailbox.payload = -99;
|
||||||
CmndShutterStop();
|
CmndShutterStop();
|
||||||
return;
|
return;
|
||||||
|
@ -861,6 +919,18 @@ void CmndShutterPosition(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CmndShutterStopPosition(void)
|
||||||
|
{
|
||||||
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
uint32_t index = XdrvMailbox.index-1;
|
||||||
|
if (Shutter.direction[index]) {
|
||||||
|
XdrvMailbox.payload = -99;
|
||||||
|
CmndShutterStop();
|
||||||
|
} else {
|
||||||
|
CmndShutterPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
void CmndShutterOpenTime(void)
|
void CmndShutterOpenTime(void)
|
||||||
{
|
{
|
||||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= shutters_present)) {
|
||||||
|
@ -928,10 +998,10 @@ void CmndShutterButton(void)
|
||||||
// (setting>>28)&(0x01) : mqtt broadcast tripple press
|
// (setting>>28)&(0x01) : mqtt broadcast tripple press
|
||||||
// (setting>>27)&(0x01) : mqtt broadcast double press
|
// (setting>>27)&(0x01) : mqtt broadcast double press
|
||||||
// (setting>>26)&(0x01) : mqtt broadcast single press
|
// (setting>>26)&(0x01) : mqtt broadcast single press
|
||||||
// (setting>>20)&(0x3f) : shutter_position hold; 0 disabled, 1..101 == 0..100%
|
// (setting>>20)&(0x3f) : shutter_position hold; 0 disabled, 1..101 == 0..100%, 102 == toggle
|
||||||
// (setting>>14)&(0x3f) : shutter_position tripple press 0 disabled, 1..101 == 0..100%
|
// (setting>>14)&(0x3f) : shutter_position tripple press 0 disabled, 1..101 == 0..100%, 102 == toggle
|
||||||
// (setting>> 8)&(0x3f) : shutter_position double press 0 disabled, 1..101 == 0..100%
|
// (setting>> 8)&(0x3f) : shutter_position double press 0 disabled, 1..101 == 0..100%, 102 == toggle
|
||||||
// (setting>> 2)&(0x3f) : shutter_position single press 0 disabled, 1..101 == 0..100%
|
// (setting>> 2)&(0x3f) : shutter_position single press 0 disabled, 1..101 == 0..100%, 102 == toggle
|
||||||
// (setting>> 0)&(0x03) : shutter_index
|
// (setting>> 0)&(0x03) : shutter_index
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
|
@ -945,10 +1015,16 @@ void CmndShutterButton(void)
|
||||||
// Loop through the data string, splitting on ' ' seperators.
|
// Loop through the data string, splitting on ' ' seperators.
|
||||||
for (char *str = strtok_r(data_copy, " ", &str_ptr); str && i < (1+4+4+1); str = strtok_r(nullptr, " ", &str_ptr), i++) {
|
for (char *str = strtok_r(data_copy, " ", &str_ptr); str && i < (1+4+4+1); str = strtok_r(nullptr, " ", &str_ptr), i++) {
|
||||||
int field;
|
int field;
|
||||||
if (str[0] == '-') {
|
switch (str[0]) {
|
||||||
field = -1;
|
case '-':
|
||||||
} else {
|
field = -1;
|
||||||
field = atoi(str);
|
break;
|
||||||
|
case 't':
|
||||||
|
field = 102;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
field = atoi(str);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -971,18 +1047,22 @@ void CmndShutterButton(void)
|
||||||
setting |= (((100>>1)+1)<<2) | (((0>>1)+1)<<8) | (((50>>1)+1)<<14);
|
setting |= (((100>>1)+1)<<2) | (((0>>1)+1)<<8) | (((50>>1)+1)<<14);
|
||||||
isShortCommand = true;
|
isShortCommand = true;
|
||||||
break;
|
break;
|
||||||
|
} else if (!strcmp_P(str, PSTR("toggle"))) {
|
||||||
|
setting |= (((102>>1)+1)<<2) | (((50>>1)+1)<<8);
|
||||||
|
isShortCommand = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
if (isShortCommand) {
|
if (isShortCommand) {
|
||||||
if ((field==1) && (setting & (0x3F<<(2+6*3))))
|
if ((field==1) && (setting & (0x3F<<(2+6*3))))
|
||||||
// if short command up or down then also enable MQTT broadcast
|
// if short command up or down (hold press position set) then also enable MQTT broadcast
|
||||||
setting |= (0x3<<29);
|
setting |= (0x3<<29);
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
if ((field >= -1) && (field<=100))
|
if ((field >= -1) && (field<=102))
|
||||||
setting |= (((field>>1)+1)<<(i*6 + (2-6)));
|
setting |= (((field>>1)+1)<<(i*6 + (2-6)));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
@ -1023,8 +1103,12 @@ void CmndShutterButton(void)
|
||||||
|
|
||||||
for (uint32_t j=0 ; j < 4 ; j++) {
|
for (uint32_t j=0 ; j < 4 ; j++) {
|
||||||
int8_t pos = (((setting>> (2+6*j))&(0x3f))-1)<<1;
|
int8_t pos = (((setting>> (2+6*j))&(0x3f))-1)<<1;
|
||||||
if (pos>=0)
|
if (0 <= pos)
|
||||||
setting_chr_ptr += snprintf_P(setting_chr_ptr, 5, PSTR(" %d"), pos);
|
if (102 == pos) {
|
||||||
|
setting_chr_ptr += sprintf_P(setting_chr_ptr, PSTR(" t"));
|
||||||
|
} else {
|
||||||
|
setting_chr_ptr += snprintf_P(setting_chr_ptr, 5, PSTR(" %d"), pos);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
setting_chr_ptr += sprintf_P(setting_chr_ptr, PSTR(" -"));
|
setting_chr_ptr += sprintf_P(setting_chr_ptr, PSTR(" -"));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue