sensors: gpio command
This commit is contained in:
@@ -545,7 +545,16 @@ void SensorMesh::handleCommand(uint32_t sender_timestamp, char* command, char* r
|
|||||||
Serial.printf("\n");
|
Serial.printf("\n");
|
||||||
}
|
}
|
||||||
reply[0] = 0;
|
reply[0] = 0;
|
||||||
} else {
|
} else if (memcmp(command, "gpio ", 4) == 0) { // gpio {value}: write, gpio: read
|
||||||
|
if (command[4] == ' ') { // it's a write
|
||||||
|
uint32_t val;
|
||||||
|
sscanf(&command[5], "%x", &val);
|
||||||
|
board.setGpio(val);
|
||||||
|
strcpy(reply, "Ok");
|
||||||
|
} else {
|
||||||
|
sprintf(reply, "%x", board.getGpio());
|
||||||
|
}
|
||||||
|
} else{
|
||||||
_cli.handleCommand(sender_timestamp, command, reply); // common CLI commands
|
_cli.handleCommand(sender_timestamp, command, reply); // common CLI commands
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ public:
|
|||||||
virtual void onAfterTransmit() { }
|
virtual void onAfterTransmit() { }
|
||||||
virtual void reboot() = 0;
|
virtual void reboot() = 0;
|
||||||
virtual void powerOff() { /* no op */ }
|
virtual void powerOff() { /* no op */ }
|
||||||
|
virtual uint32_t getGpio() { return 0; }
|
||||||
|
virtual void setGpio(uint32_t values) {}
|
||||||
virtual uint8_t getStartupReason() const = 0;
|
virtual uint8_t getStartupReason() const = 0;
|
||||||
virtual bool startOTAUpdate(const char* id, char reply[]) { return false; } // not supported
|
virtual bool startOTAUpdate(const char* id, char reply[]) { return false; } // not supported
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,6 +13,12 @@
|
|||||||
|
|
||||||
class RAK3x72Board : public STM32Board {
|
class RAK3x72Board : public STM32Board {
|
||||||
public:
|
public:
|
||||||
|
void begin() override {
|
||||||
|
STM32Board::begin();
|
||||||
|
pinMode(PA0, OUTPUT);
|
||||||
|
pinMode(PA1, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
const char* getManufacturerName() const override {
|
const char* getManufacturerName() const override {
|
||||||
return "RAK 3x72";
|
return "RAK 3x72";
|
||||||
}
|
}
|
||||||
@@ -25,6 +31,17 @@ public:
|
|||||||
}
|
}
|
||||||
return ((double)raw) * ADC_MULTIPLIER / 8 / 4096;
|
return ((double)raw) * ADC_MULTIPLIER / 8 / 4096;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setGpio(uint32_t values) override {
|
||||||
|
// set led values
|
||||||
|
digitalWrite(PA0, values & 1);
|
||||||
|
digitalWrite(PA1, (values & 2) >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t getGpio() override {
|
||||||
|
// get led value
|
||||||
|
return (digitalRead(PA1) << 1) | digitalRead(PA0);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
extern RAK3x72Board board;
|
extern RAK3x72Board board;
|
||||||
|
|||||||
Reference in New Issue
Block a user