36 bool ISNewSwitch(
const char *dev,
const char *name,
ISState *states,
char *names[],
int n)
override;
41 bool queryIdentity(std::string &out);
42 bool getPortMask(uint32_t &mask);
43 bool setPortMask(uint32_t mask);
44 bool sendCommand(
const std::string &
cmd, std::string &response);
46 bool setUSBPortEnabled(uint8_t port,
bool enabled);
47 bool setAllPortsEnabled(
bool enabled);
48 void updatePortsFromMask(uint32_t mask);
50 static constexpr const char CMD_GET_IDENTITY[] =
"?Q";
51 static constexpr const char CMD_GET_MASK[] =
"GP";
52 static constexpr const char CMD_SET_MASK[] =
"SP";
55 static constexpr const char DEFAULT_PASS8[] =
"pass ";
57 static constexpr uint8_t USB_PORTS = 7;
58 static constexpr size_t ALIAS_MAX_LEN = 16;
59 static constexpr uint8_t STARTECH_TIMEOUT_SEC = 3;
62 enum { SW_ON = 0, SW_OFF = 1 };
65 enum { INFO_IDENTITY, INFO_MASK, INFO_N };
68 enum { ALIAS_P1, ALIAS_P2, ALIAS_P3, ALIAS_P4, ALIAS_P5, ALIAS_P6, ALIAS_P7, ALIAS_N };
71 std::array<INDI::PropertySwitch, USB_PORTS> USBPortSP {
79 std::array<std::string, USB_PORTS> portAliases {};
80 std::array<std::string, USB_PORTS> committedAliases {};
82 void syncAliasesFromProperty(
bool rewriteTruncated =
true);
83 std::string sanitizeAlias(
const std::string &in,
bool &wasTruncated)
const;
84 std::string defaultPortLabel(uint8_t port)
const;
87 void applyPortLabelsAndRedefineUSBProperties();
93 uint32_t currentMask {0xFFFFFFFF};
bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.