#pragma once /* * Astrosib BM-700 mount client-to-server communication protocol * (extended by 10Micron LX200 protocol) */ #include #include #include namespace BM700 { namespace details { // FVN-1a hash function static constexpr size_t FNV1aHash(const std::string_view& r) { static_assert(sizeof(size_t) == 8 || sizeof(size_t) == 4, "ONLY FOR 32 or 64-bit size_t!!!"); size_t hash = 0, prime = 0; if constexpr (sizeof(size_t) == 8) { // 64-bit prime = 1099511628211UL; hash = 14695981039346656037UL; } else if constexpr (sizeof(size_t) == 4) { // 32-bit prime = 16777619; hash = 2166136261; } for (const char& ch : r) { hash ^= ch; hash *= prime; } return hash; } } // namespace details static constexpr std::string_view PROTO_COMMAND_STR_ACK = "\x06"; static constexpr std::string_view PROTO_COMMAND_STR_TRACK_STOP = "AL"; static constexpr std::string_view PROTO_COMMAND_STR_TRACK_START = "AP"; static constexpr std::string_view PROTO_COMMAND_STR_TEL_ALT = "GA"; static constexpr std::string_view PROTO_COMMAND_STR_TAG_ALT = "Ga"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_DATE = "GC"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TEL_DEC = "GD"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TAG_DEC = "Gd"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_SITE_ELEV = "Gev"; static constexpr std::string_view PROTO_COMMAND_STR_GET_UTC_OFFSET = "GG"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_SITE_LONG = "Gg"; static constexpr std::string_view PROTO_COMMAND_STR_GET_HIGHEST_ALT = "Gh"; static constexpr std::string_view PROTO_COMMAND_STR_GINFO = "Ginfo"; static constexpr std::string_view PROTO_COMMAND_STR_GINQ = "GINQ"; static constexpr std::string_view PROTO_COMMAND_STR_GET_MOUNT_IP_ADDR = "GIP"; static constexpr std::string_view PROTO_COMMAND_STR_MOUNT_WIRELESS_IP_ADDR = "GIPW"; static constexpr std::string_view PROTO_COMMAND_STR_MOUNT_MAC_ADDR = "GMAC"; static constexpr std::string_view PROTO_COMMAND_STR_GET_MOUNT_WIRELESS_MAC_ADDR = "GMACW"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_JULDATE = "GJD"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC = "GJD1"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC_LEAP_SEC = "GJD2"; static constexpr std::string_view PROTO_COMMAND_STR_GET_LOCAL_TIME = "GL"; static constexpr std::string_view PROTO_COMMAND_STR_GET_LOCAL_DATE_TIME = "GLDT"; static constexpr std::string_view PROTO_COMMAND_STR_GET_UTC_DATE_TIME = "GUDT"; static constexpr std::string_view PROTO_COMMAND_STR_GET_UTC_UT1_DIFF = "GDUT"; static constexpr std::string_view PROTO_COMMAND_STR_GET_GPS_UTC_DIFF = "GDGPS"; static constexpr std::string_view PROTO_COMMAND_STR_GET_NEXT_LEAP_SEC = "GULEAP"; static constexpr std::string_view PROTO_COMMAND_STR_GET_MERIDIAN_BEHAV = "GMF"; static constexpr std::string_view PROTO_COMMAND_STR_GET_LOWEST_ALT = "Go"; static constexpr std::string_view PROTO_COMMAND_STR_GET_PA = "GPA"; static constexpr std::string_view PROTO_COMMAND_STR_GET_PA_SPEED = "GPAS"; static constexpr std::string_view PROTO_COMMAND_STR_GET_PA_ZENITH = "GPAZ"; static constexpr std::string_view PROTO_COMMAND_STR_GET_PA_ZENITH_SPEED = "GPASZ"; static constexpr std::string_view PROTO_COMMAND_STR_GET_GUIDING_STATUS = "Gpgc"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TEL_RA = "GR"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TAG_RA = "Gr"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ATM_PRES = "GRPRS"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ATM_TEMP = "GRTMP"; static constexpr std::string_view PROTO_COMMAND_STR_GET_SIDERAL_TIME = "GS"; static constexpr std::string_view PROTO_COMMAND_STR_GET_REFRACT_CORR_STATUS = "GREF"; static constexpr std::string_view PROTO_COMMAND_STR_GET_SPEED_CORR_STATUS = "GSC"; static constexpr std::string_view PROTO_COMMAND_STR_GSTAT = "Gstat"; static constexpr std::string_view PROTO_COMMAND_STR_GET_SETTLE_TIME = "Gstm"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TRACK_MERIDIAN_LIMIT = "Glmt"; static constexpr std::string_view PROTO_COMMAND_STR_GET_SLEW_MERIDIAN_LIMIT = "Glms"; static constexpr std::string_view PROTO_COMMAND_STR_GET_EST_TRACK_TIME = "Gmte"; static constexpr std::string_view PROTO_COMMAND_STR_GET_UNATTEND_FLIP_SETTING = "Guaf"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TRACK_RATE = "GT"; static constexpr std::string_view PROTO_COMMAND_STR_GET_CURR_SITE_LAT = "Gt"; static constexpr std::string_view PROTO_COMMAND_STR_GET_MOUNT_TRACK_STATUS = "GTRK"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TAG_TRACK_STATUS = "GTTRK"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TAG_DEST_SIDE = "GTsid"; static constexpr std::string_view PROTO_COMMAND_STR_GET_FWR_DATE = "GVD"; static constexpr std::string_view PROTO_COMMAND_STR_GET_FWR_NUM = "GVN"; static constexpr std::string_view PROTO_COMMAND_STR_GET_PROD_NAME = "GVP"; // "Asib BM700"? static constexpr std::string_view PROTO_COMMAND_STR_GET_FWR_TIME = "GVT"; static constexpr std::string_view PROTO_COMMAND_STR_GET_HWR_VERSION = "GVZ"; static constexpr std::string_view PROTO_COMMAND_STR_GET_WOL_CONF = "GWOL"; static constexpr std::string_view PROTO_COMMAND_STR_WLAN_AVAIL = "GWAV"; // always "0#"? static constexpr std::string_view PROTO_COMMAND_STR_GET_TEL_AZ = "GZ"; static constexpr std::string_view PROTO_COMMAND_STR_GET_TAG_AZ = "Gz"; static constexpr std::string_view PROTO_COMMAND_STR_GET_POINT_STATE = "pS"; // "side of the pier" static constexpr std::string_view PROTO_COMMAND_STR_GET_EMUL_FWR_REV = "V"; // always returns "G#" static constexpr std::string_view PROTO_COMMAND_STR_HOME_SEEK_AND_STORE = "hS"; static constexpr std::string_view PROTO_COMMAND_STR_HOME_SEEK_AND_ALIGN = "hF"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_PARK_hS = "hS"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_PARK_KA = "KA"; static constexpr std::string_view PROTO_COMMAND_STR_UNPARK = "PO"; static constexpr std::string_view PROTO_COMMAND_STR_QUERY_HOME_STATUS = "h?"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_AZ = "MA"; static constexpr std::string_view PROTO_COMMAND_STR_MOVE_EAST = "Me"; static constexpr std::string_view PROTO_COMMAND_STR_MOVE_NORTH = "Mn"; static constexpr std::string_view PROTO_COMMAND_STR_MOVE_SOUTH = "Ms"; static constexpr std::string_view PROTO_COMMAND_STR_MOVE_WEST = "Mw"; static constexpr std::string_view PROTO_COMMAND_STR_CORR_EAST = "Mge"; static constexpr std::string_view PROTO_COMMAND_STR_CORR_NORTH = "Mgn"; static constexpr std::string_view PROTO_COMMAND_STR_CORR_SOUTH = "Mgs"; static constexpr std::string_view PROTO_COMMAND_STR_CORR_WEST = "Mgw"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_TAG = "MS"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_TAG_SIDE = "MSfs"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_TAG_DISREG_FINE_MOVE = "MSnf"; static constexpr std::string_view PROTO_COMMAND_STR_SWAP_EAST_WEST = "EW"; static constexpr std::string_view PROTO_COMMAND_STR_SWAP_NORTH_SOUTH = "NS"; static constexpr std::string_view PROTO_COMMAND_STR_HALT_ALL = "Q"; static constexpr std::string_view PROTO_COMMAND_STR_HALT_EASTWARD = "Qe"; static constexpr std::string_view PROTO_COMMAND_STR_HALT_NORTHWARD = "Qn"; static constexpr std::string_view PROTO_COMMAND_STR_HALT_SOUTHWARD = "Qs"; static constexpr std::string_view PROTO_COMMAND_STR_HALT_WESTWARD = "Qw"; static constexpr std::string_view PROTO_COMMAND_STR_FLIP = "FLIP"; // ??????????? static constexpr std::string_view PROTO_COMMAND_STR_SLEW_PROGRESS_STRING = "D"; static constexpr std::string_view PROTO_COMMAND_STR_NUDGE = "NUDGE"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_CENTERING_RATE = "RC"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_GUIDING_RATE = "RG"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_FIND_RATE = "RM"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_MAX_RATE = "RS"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SLEW_RA_RATE = "RA"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SLEW_DEC_RATE = "RE"; static constexpr std::string_view PROTO_COMMAND_STR_SET_GUIDING_RATE = "Rg"; static constexpr std::string_view PROTO_COMMAND_STR_SET_CENTERING_RATE = "Rc"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SLEW_RATE = "Rs"; // multiple of sideral rate static constexpr std::string_view PROTO_COMMAND_STR_SET_SLEW_ABS_RATE = "RMs"; // in degs/s static constexpr std::string_view PROTO_COMMAND_STR_GET_SLEW_ABS_RATE = "GMs"; // in degs/s static constexpr std::string_view PROTO_COMMAND_STR_GET_MIN_SLEW_ABS_RATE = "GMsa"; // in degs/s static constexpr std::string_view PROTO_COMMAND_STR_GET_MAX_SLEW_ABS_RATE = "GMsb"; // in degs/s static constexpr std::string_view PROTO_COMMAND_STR_GET_GUIDING_RATE = "Ggui"; // in arcsec/s static constexpr std::string_view PROTO_COMMAND_STR_SET_DEC_BACKLASH = "Bd"; static constexpr std::string_view PROTO_COMMAND_STR_SET_RA_BACKLASH = "Br"; static constexpr std::string_view PROTO_COMMAND_STR_SET_TAG_ALT = "Sa"; static constexpr std::string_view PROTO_COMMAND_STR_SET_BAUD_RATE = "SB"; static constexpr std::string_view PROTO_COMMAND_STR_SET_LOCAL_DATE = "SC"; static constexpr std::string_view PROTO_COMMAND_STR_SET_TAG_DEC = "Sd"; static constexpr std::string_view PROTO_COMMAND_STR_SET_CURR_SITE_LONG = "Sg"; static constexpr std::string_view PROTO_COMMAND_STR_SET_UTC_OFFSET = "SG"; // = UTC-LOCAL (hours) static constexpr std::string_view PROTO_COMMAND_STR_SET_HIGHEST_ALT = "Sh"; static constexpr std::string_view PROTO_COMMAND_STR_SET_CURR_JULDATE = "SJD"; static constexpr std::string_view PROTO_COMMAND_STR_SET_LOCAL_TIME = "SL"; static constexpr std::string_view PROTO_COMMAND_STR_SET_LOCAL_DATE_TIME = "SLDT"; static constexpr std::string_view PROTO_COMMAND_STR_SET_UTC_DATE_TIME = "SUDT"; static constexpr std::string_view PROTO_COMMAND_STR_SET_MERIDIAN_BEHAV = "SMF"; static constexpr std::string_view PROTO_COMMAND_STR_SET_LOWEST_ALT = "So"; static constexpr std::string_view PROTO_COMMAND_STR_SET_TAG_RA = "Sr"; static constexpr std::string_view PROTO_COMMAND_STR_SET_REFRACT_CORR_STATUS = "SREF"; static constexpr std::string_view PROTO_COMMAND_STR_SET_ATM_PRES = "SRPRS"; static constexpr std::string_view PROTO_COMMAND_STR_SET_ATM_TEMP = "SRTMP"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SPEED_CORR_STATUS = "SSC"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SETTLE_TIME = "Sstm"; static constexpr std::string_view PROTO_COMMAND_STR_SET_TRACK_MERIDIAN_LIMIT = "Slmt"; static constexpr std::string_view PROTO_COMMAND_STR_SET_SLEW_MERIDIAN_LIMIT = "Slms"; static constexpr std::string_view PROTO_COMMAND_STR_SET_UNATTEND_FLIP_SETTING = "Suaf"; static constexpr std::string_view PROTO_COMMAND_STR_SET_CURR_SITE_LAT = "St"; static constexpr std::string_view PROTO_COMMAND_STR_STOP = "STOP"; static constexpr std::string_view PROTO_COMMAND_STR_SET_MAX_SLEW_ABS_RATE = "Sw"; // in degs/s static constexpr std::string_view PROTO_COMMAND_STR_SET_WOL_CONF = "SWOL"; static constexpr std::string_view PROTO_COMMAND_STR_SET_MOUNT_IP_ADDR = "SIP"; static constexpr std::string_view PROTO_COMMAND_STR_SET_TAG_AZ = "Sz"; static constexpr std::string_view PROTO_COMMAND_STR_TOGGLE_PEC = "$Q"; static constexpr std::string_view PROTO_COMMAND_STR_PEC_OFF = "p"; static constexpr std::string_view PROTO_COMMAND_STR_PEC_ON = "pP"; static constexpr std::string_view PROTO_COMMAND_STR_INC_CUSTOM_TRACK_RATE = "T+"; // ++0.025 "/s static constexpr std::string_view PROTO_COMMAND_STR_DEC_CUSTOM_TRACK_RATE = "T-"; // --0.025 "/s static constexpr std::string_view PROTO_COMMAND_STR_LUNAR_TRACK_RATE = "TL"; static constexpr std::string_view PROTO_COMMAND_STR_SOLAR_TRACK_RATE = "TSOLAR"; static constexpr std::string_view PROTO_COMMAND_STR_CUSTOM_TRACK_RATE_ON = "TM"; // turn on custom tracking rate static constexpr std::string_view PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON = "TQ"; // turn on sideral tracking rate static constexpr std::string_view PROTO_COMMAND_STR_SET_CUSTOM_TRACK_RATE = "T"; // see "GT" static constexpr std::string_view PROTO_COMMAND_STR_SET_TRACK_RATE = "ST"; // see "GT" static constexpr std::string_view PROTO_COMMAND_STR_LUNAR_TRACK_RATE_EXT = "RT0"; static constexpr std::string_view PROTO_COMMAND_STR_SOLAR_TRACK_RATE_EXT = "RT1"; static constexpr std::string_view PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON_EXT = "RT2"; // turn on sideral tracking rate static constexpr std::string_view PROTO_COMMAND_STR_STOP_TRACK = "RT9"; static constexpr std::string_view PROTO_COMMAND_STR_SET_RA_TRACK_RATE = "RR"; static constexpr std::string_view PROTO_COMMAND_STR_SET_DEC_TRACK_RATE = "RD"; static constexpr std::string_view PROTO_COMMAND_STR_DUAL_TRACK_CONF = "Sdat"; static constexpr std::string_view PROTO_COMMAND_STR_DUAL_TRACK_STATUS = "Gdat"; static constexpr std::string_view PROTO_COMMAND_STR_SET_PREC_MODE = "U"; // just for compability (do nothing) static constexpr std::string_view PROTO_COMMAND_STR_SET_PREC_MODE_0 = "U0"; // just for compability (do nothing) static constexpr std::string_view PROTO_COMMAND_STR_SET_PREC_MODE_1 = "U1"; // just for compability (do nothing) static constexpr std::string_view PROTO_COMMAND_STR_SET_PREC_MODE_2 = "U2"; // just for compability (do nothing) static constexpr std::string_view PROTO_COMMAND_STR_SET_FINAL_APP_TC = "SFAtc"; // time constant static constexpr std::string_view PROTO_COMMAND_STR_GET_FINAL_APP_TC = "GFAtc"; static constexpr std::string_view PROTO_COMMAND_STR_SET_FINAL_APP_DL = "SFAlm"; // distance limit static constexpr std::string_view PROTO_COMMAND_STR_GET_FINAL_APP_DL = "GFAlm"; static constexpr std::string_view PROTO_COMMAND_STR_SET_FINAL_APP_MODE = "SFAmd"; // set final approach mode static constexpr std::string_view PROTO_COMMAND_STR_GET_FINAL_APP_MODE = "GFAmd"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ANG_RA_POS = "GaXa"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ANG_DEC_POS = "GaXb"; static constexpr std::string_view PROTO_COMMAND_STR_SET_ANG_TAG_RA_POS = "SaXa"; static constexpr std::string_view PROTO_COMMAND_STR_SET_ANG_TAG_DEC_POS = "SaXb"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ANG_TAG_RA_POS = "QaXa"; static constexpr std::string_view PROTO_COMMAND_STR_GET_ANG_TAG_DEC_POS = "QaXb"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_ANG_TAG = "MaX"; // slew and stop static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_ANG_TAG_PARK = "PaX"; // slew and park static constexpr std::string_view PROTO_COMMAND_STR_PARK_IN_CURR_POS = "PiP"; static constexpr std::string_view PROTO_COMMAND_STR_SLEW_TO_PARK_ANG_POS = "PsX"; static constexpr std::string_view PROTO_COMMAND_STR_SAVE_PARK_ANG_POS = "PyX"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD = "TLEDL"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_NUM = "TLEDN"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_GET = "TLEG"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD0 = "TLEL0"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_GET_AZ = "TLEGAZ"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_GET_EQ = "TLEGEQ"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_PRE_TRANS = "TLEP"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW = "TLES"; static constexpr std::string_view PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW_STATUS = "TLESCK"; static constexpr std::string_view PROTO_COMMAND_STR_EMUAP = "EMUAP"; // do nothing, just for compability static constexpr std::string_view PROTO_COMMAND_STR_EMULX = "EMULX"; // do nothing, just for compability static constexpr std::string_view PROTO_COMMAND_STR_START_COMM_LOG = "startlog"; static constexpr std::string_view PROTO_COMMAND_STR_STOP_COMM_LOG = "stoplog"; static constexpr std::string_view PROTO_COMMAND_STR_MOUNT_SHUTDOWN = "shutdown"; static constexpr std::string_view PROTO_COMMAND_STR_GET_COMM_LOG = "getlog"; static constexpr std::string_view PROTO_COMMAND_STR_GET_EV_LOG = "evlog"; static constexpr std::string_view PROTO_COMMAND_STR_USEROK = "USEROK"; static constexpr std::string_view PROTO_COMMAND_STR_USERWAIT = "USERWAIT"; static constexpr std::string_view PROTO_COMMAND_STR_GETID = "GETID"; static constexpr std::string_view PROTO_COMMAND_STR_ADJUST_TIME = "NUtim"; // PCS - pointing correction system static constexpr std::string_view PROTO_COMMAND_STR_PCS_ADD_ALIGN_TAG = "CMS"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG = "CM"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG1 = "CMR"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_SYNC_CFG = "CMCFG"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_ALIGN_POINTS_NUM = "getals"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_DEL_CURR_MODEL = "delalig"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO = "getali"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_GET_MODEL_INFO = "getain"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO1 = "getalp"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_DEL_ALIGN_POINT = "delalst"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_START = "newalig"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_NEW_ALIGN_POINT = "newalpt"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_STOP = "endalig"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_GET_MODELS_NUM = "modelcnt"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_GET_MODEL_NAME = "modelnam"; static constexpr std::string_view PROTO_COMMAND_STR_PCS_LOAD_MODEL = "modelld0"; // by name static constexpr std::string_view PROTO_COMMAND_STR_PCS_SAVE_MODEL = "modelsv0"; // by name static constexpr std::string_view PROTO_COMMAND_STR_PCS_DEL_MODEL = "modeldel0"; // by name struct proto_command_t { std::string_view comm; size_t hash; std::string_view desc; }; enum PROTO_COMMAND_ID : size_t { PROTO_COMMAND_ID_ACK = details::FNV1aHash(PROTO_COMMAND_STR_ACK), PROTO_COMMAND_ID_TRACK_STOP = details::FNV1aHash(PROTO_COMMAND_STR_TRACK_STOP), PROTO_COMMAND_ID_TRACK_START = details::FNV1aHash(PROTO_COMMAND_STR_TRACK_START), PROTO_COMMAND_ID_TEL_ALT = details::FNV1aHash(PROTO_COMMAND_STR_TEL_ALT), PROTO_COMMAND_ID_TAG_ALT = details::FNV1aHash(PROTO_COMMAND_STR_TAG_ALT), PROTO_COMMAND_ID_GET_CURR_DATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_DATE), PROTO_COMMAND_ID_GET_TEL_DEC = details::FNV1aHash(PROTO_COMMAND_STR_GET_TEL_DEC), PROTO_COMMAND_ID_GET_TAG_DEC = details::FNV1aHash(PROTO_COMMAND_STR_GET_TAG_DEC), PROTO_COMMAND_ID_GET_CURR_SITE_ELEV = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_SITE_ELEV), PROTO_COMMAND_ID_GET_UTC_OFFSET = details::FNV1aHash(PROTO_COMMAND_STR_GET_UTC_OFFSET), PROTO_COMMAND_ID_GET_CURR_SITE_LONG = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_SITE_LONG), PROTO_COMMAND_ID_GET_HIGHEST_ALT = details::FNV1aHash(PROTO_COMMAND_STR_GET_HIGHEST_ALT), PROTO_COMMAND_ID_GINFO = details::FNV1aHash(PROTO_COMMAND_STR_GINFO), PROTO_COMMAND_ID_GINQ = details::FNV1aHash(PROTO_COMMAND_STR_GINQ), PROTO_COMMAND_ID_GET_MOUNT_IP_ADDR = details::FNV1aHash(PROTO_COMMAND_STR_GET_MOUNT_IP_ADDR), PROTO_COMMAND_ID_MOUNT_WIRELESS_IP_ADDR = details::FNV1aHash(PROTO_COMMAND_STR_MOUNT_WIRELESS_IP_ADDR), PROTO_COMMAND_ID_MOUNT_MAC_ADDR = details::FNV1aHash(PROTO_COMMAND_STR_MOUNT_MAC_ADDR), PROTO_COMMAND_ID_GET_MOUNT_WIRELESS_MAC_ADDR = details::FNV1aHash(PROTO_COMMAND_STR_GET_MOUNT_WIRELESS_MAC_ADDR), PROTO_COMMAND_ID_GET_CURR_JULDATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_JULDATE), PROTO_COMMAND_ID_GET_CURR_JULDATE_EXTPREC = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC), PROTO_COMMAND_ID_GET_CURR_JULDATE_EXTPREC_LEAP_SEC = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC_LEAP_SEC), PROTO_COMMAND_ID_GET_LOCAL_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_LOCAL_TIME), PROTO_COMMAND_ID_GET_LOCAL_DATE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_LOCAL_DATE_TIME), PROTO_COMMAND_ID_GET_UTC_DATE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_UTC_DATE_TIME), PROTO_COMMAND_ID_GET_UTC_UT1_DIFF = details::FNV1aHash(PROTO_COMMAND_STR_GET_UTC_UT1_DIFF), PROTO_COMMAND_ID_GET_GPS_UTC_DIFF = details::FNV1aHash(PROTO_COMMAND_STR_GET_GPS_UTC_DIFF), PROTO_COMMAND_ID_GET_NEXT_LEAP_SEC = details::FNV1aHash(PROTO_COMMAND_STR_GET_NEXT_LEAP_SEC), PROTO_COMMAND_ID_GET_MERIDIAN_BEHAV = details::FNV1aHash(PROTO_COMMAND_STR_GET_MERIDIAN_BEHAV), PROTO_COMMAND_ID_GET_LOWEST_ALT = details::FNV1aHash(PROTO_COMMAND_STR_GET_LOWEST_ALT), PROTO_COMMAND_ID_GET_PA = details::FNV1aHash(PROTO_COMMAND_STR_GET_PA), PROTO_COMMAND_ID_GET_PA_SPEED = details::FNV1aHash(PROTO_COMMAND_STR_GET_PA_SPEED), PROTO_COMMAND_ID_GET_PA_ZENITH = details::FNV1aHash(PROTO_COMMAND_STR_GET_PA_ZENITH), PROTO_COMMAND_ID_GET_PA_ZENITH_SPEED = details::FNV1aHash(PROTO_COMMAND_STR_GET_PA_ZENITH_SPEED), PROTO_COMMAND_ID_GET_GUIDING_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_GET_GUIDING_STATUS), PROTO_COMMAND_ID_GET_TEL_RA = details::FNV1aHash(PROTO_COMMAND_STR_GET_TEL_RA), PROTO_COMMAND_ID_GET_TAG_RA = details::FNV1aHash(PROTO_COMMAND_STR_GET_TAG_RA), PROTO_COMMAND_ID_GET_ATM_PRES = details::FNV1aHash(PROTO_COMMAND_STR_GET_ATM_PRES), PROTO_COMMAND_ID_GET_ATM_TEMP = details::FNV1aHash(PROTO_COMMAND_STR_GET_ATM_TEMP), PROTO_COMMAND_ID_GET_SIDERAL_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_SIDERAL_TIME), PROTO_COMMAND_ID_GET_REFRACT_CORR_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_GET_REFRACT_CORR_STATUS), PROTO_COMMAND_ID_GET_SPEED_CORR_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_GET_SPEED_CORR_STATUS), PROTO_COMMAND_ID_GSTAT = details::FNV1aHash(PROTO_COMMAND_STR_GSTAT), PROTO_COMMAND_ID_GET_SETTLE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_SETTLE_TIME), PROTO_COMMAND_ID_GET_TRACK_MERIDIAN_LIMIT = details::FNV1aHash(PROTO_COMMAND_STR_GET_TRACK_MERIDIAN_LIMIT), PROTO_COMMAND_ID_GET_SLEW_MERIDIAN_LIMIT = details::FNV1aHash(PROTO_COMMAND_STR_GET_SLEW_MERIDIAN_LIMIT), PROTO_COMMAND_ID_GET_EST_TRACK_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_EST_TRACK_TIME), PROTO_COMMAND_ID_GET_UNATTEND_FLIP_SETTING = details::FNV1aHash(PROTO_COMMAND_STR_GET_UNATTEND_FLIP_SETTING), PROTO_COMMAND_ID_GET_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_TRACK_RATE), PROTO_COMMAND_ID_GET_CURR_SITE_LAT = details::FNV1aHash(PROTO_COMMAND_STR_GET_CURR_SITE_LAT), PROTO_COMMAND_ID_GET_MOUNT_TRACK_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_GET_MOUNT_TRACK_STATUS), PROTO_COMMAND_ID_GET_TAG_TRACK_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_GET_TAG_TRACK_STATUS), PROTO_COMMAND_ID_GET_TAG_DEST_SIDE = details::FNV1aHash(PROTO_COMMAND_STR_GET_TAG_DEST_SIDE), PROTO_COMMAND_ID_GET_FWR_DATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_FWR_DATE), PROTO_COMMAND_ID_GET_FWR_NUM = details::FNV1aHash(PROTO_COMMAND_STR_GET_FWR_NUM), PROTO_COMMAND_ID_GET_PROD_NAME = details::FNV1aHash(PROTO_COMMAND_STR_GET_PROD_NAME), PROTO_COMMAND_ID_GET_FWR_TIME = details::FNV1aHash(PROTO_COMMAND_STR_GET_FWR_TIME), PROTO_COMMAND_ID_GET_HWR_VERSION = details::FNV1aHash(PROTO_COMMAND_STR_GET_HWR_VERSION), PROTO_COMMAND_ID_GET_WOL_CONF = details::FNV1aHash(PROTO_COMMAND_STR_GET_WOL_CONF), PROTO_COMMAND_ID_WLAN_AVAIL = details::FNV1aHash(PROTO_COMMAND_STR_WLAN_AVAIL), PROTO_COMMAND_ID_GET_TEL_AZ = details::FNV1aHash(PROTO_COMMAND_STR_GET_TEL_AZ), PROTO_COMMAND_ID_GET_TAG_AZ = details::FNV1aHash(PROTO_COMMAND_STR_GET_TAG_AZ), PROTO_COMMAND_ID_GET_POINT_STATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_POINT_STATE), PROTO_COMMAND_ID_GET_EMUL_FWR_REV = details::FNV1aHash(PROTO_COMMAND_STR_GET_EMUL_FWR_REV), PROTO_COMMAND_ID_HOME_SEEK_AND_STORE = details::FNV1aHash(PROTO_COMMAND_STR_HOME_SEEK_AND_STORE), PROTO_COMMAND_ID_HOME_SEEK_AND_ALIGN = details::FNV1aHash(PROTO_COMMAND_STR_HOME_SEEK_AND_ALIGN), PROTO_COMMAND_ID_SLEW_TO_PARK_hS = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_PARK_hS), PROTO_COMMAND_ID_SLEW_TO_PARK_KA = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_PARK_KA), PROTO_COMMAND_ID_UNPARK = details::FNV1aHash(PROTO_COMMAND_STR_UNPARK), PROTO_COMMAND_ID_QUERY_HOME_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_QUERY_HOME_STATUS), PROTO_COMMAND_ID_SLEW_TO_AZ = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_AZ), PROTO_COMMAND_ID_MOVE_EAST = details::FNV1aHash(PROTO_COMMAND_STR_MOVE_EAST), PROTO_COMMAND_ID_MOVE_NORTH = details::FNV1aHash(PROTO_COMMAND_STR_MOVE_NORTH), PROTO_COMMAND_ID_MOVE_SOUTH = details::FNV1aHash(PROTO_COMMAND_STR_MOVE_SOUTH), PROTO_COMMAND_ID_MOVE_WEST = details::FNV1aHash(PROTO_COMMAND_STR_MOVE_WEST), PROTO_COMMAND_ID_CORR_EAST = details::FNV1aHash(PROTO_COMMAND_STR_CORR_EAST), PROTO_COMMAND_ID_CORR_NORTH = details::FNV1aHash(PROTO_COMMAND_STR_CORR_NORTH), PROTO_COMMAND_ID_CORR_SOUTH = details::FNV1aHash(PROTO_COMMAND_STR_CORR_SOUTH), PROTO_COMMAND_ID_CORR_WEST = details::FNV1aHash(PROTO_COMMAND_STR_CORR_WEST), PROTO_COMMAND_ID_SLEW_TO_TAG = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_TAG), PROTO_COMMAND_ID_SLEW_TO_TAG_SIDE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_TAG_SIDE), PROTO_COMMAND_ID_SLEW_TO_TAG_DISREG_FINE_MOVE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_TAG_DISREG_FINE_MOVE), PROTO_COMMAND_ID_SWAP_EAST_WEST = details::FNV1aHash(PROTO_COMMAND_STR_SWAP_EAST_WEST), PROTO_COMMAND_ID_SWAP_NORTH_SOUTH = details::FNV1aHash(PROTO_COMMAND_STR_SWAP_NORTH_SOUTH), PROTO_COMMAND_ID_HALT_ALL = details::FNV1aHash(PROTO_COMMAND_STR_HALT_ALL), PROTO_COMMAND_ID_HALT_EASTWARD = details::FNV1aHash(PROTO_COMMAND_STR_HALT_EASTWARD), PROTO_COMMAND_ID_HALT_NORTHWARD = details::FNV1aHash(PROTO_COMMAND_STR_HALT_NORTHWARD), PROTO_COMMAND_ID_HALT_SOUTHWARD = details::FNV1aHash(PROTO_COMMAND_STR_HALT_SOUTHWARD), PROTO_COMMAND_ID_HALT_WESTWARD = details::FNV1aHash(PROTO_COMMAND_STR_HALT_WESTWARD), PROTO_COMMAND_ID_FLIP = details::FNV1aHash(PROTO_COMMAND_STR_FLIP), PROTO_COMMAND_ID_SLEW_PROGRESS_STRING = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_PROGRESS_STRING), PROTO_COMMAND_ID_NUDGE = details::FNV1aHash(PROTO_COMMAND_STR_NUDGE), PROTO_COMMAND_ID_SLEW_TO_CENTERING_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_CENTERING_RATE), PROTO_COMMAND_ID_SLEW_TO_GUIDING_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_GUIDING_RATE), PROTO_COMMAND_ID_SLEW_TO_FIND_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_FIND_RATE), PROTO_COMMAND_ID_SLEW_TO_MAX_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_MAX_RATE), PROTO_COMMAND_ID_SET_SLEW_RA_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_SLEW_RA_RATE), PROTO_COMMAND_ID_SET_SLEW_DEC_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_SLEW_DEC_RATE), PROTO_COMMAND_ID_SET_GUIDING_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_GUIDING_RATE), PROTO_COMMAND_ID_SET_CENTERING_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_CENTERING_RATE), PROTO_COMMAND_ID_SET_SLEW_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_SLEW_RATE), PROTO_COMMAND_ID_SET_SLEW_ABS_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_SLEW_ABS_RATE), PROTO_COMMAND_ID_GET_SLEW_ABS_RATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_SLEW_ABS_RATE), PROTO_COMMAND_ID_GET_MIN_SLEW_ABS_RATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_MIN_SLEW_ABS_RATE), PROTO_COMMAND_ID_GET_MAX_SLEW_ABS_RATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_MAX_SLEW_ABS_RATE), PROTO_COMMAND_ID_GET_GUIDING_RATE = details::FNV1aHash(PROTO_COMMAND_STR_GET_GUIDING_RATE), PROTO_COMMAND_ID_SET_DEC_BACKLASH = details::FNV1aHash(PROTO_COMMAND_STR_SET_DEC_BACKLASH), PROTO_COMMAND_ID_SET_RA_BACKLASH = details::FNV1aHash(PROTO_COMMAND_STR_SET_RA_BACKLASH), PROTO_COMMAND_ID_SET_TAG_ALT = details::FNV1aHash(PROTO_COMMAND_STR_SET_TAG_ALT), PROTO_COMMAND_ID_SET_BAUD_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_BAUD_RATE), PROTO_COMMAND_ID_SET_LOCAL_DATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_LOCAL_DATE), PROTO_COMMAND_ID_SET_TAG_DEC = details::FNV1aHash(PROTO_COMMAND_STR_SET_TAG_DEC), PROTO_COMMAND_ID_SET_CURR_SITE_LONG = details::FNV1aHash(PROTO_COMMAND_STR_SET_CURR_SITE_LONG), PROTO_COMMAND_ID_SET_UTC_OFFSET = details::FNV1aHash(PROTO_COMMAND_STR_SET_UTC_OFFSET), PROTO_COMMAND_ID_SET_HIGHEST_ALT = details::FNV1aHash(PROTO_COMMAND_STR_SET_HIGHEST_ALT), PROTO_COMMAND_ID_SET_CURR_JULDATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_CURR_JULDATE), PROTO_COMMAND_ID_SET_LOCAL_TIME = details::FNV1aHash(PROTO_COMMAND_STR_SET_LOCAL_TIME), PROTO_COMMAND_ID_SET_LOCAL_DATE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_SET_LOCAL_DATE_TIME), PROTO_COMMAND_ID_SET_UTC_DATE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_SET_UTC_DATE_TIME), PROTO_COMMAND_ID_SET_MERIDIAN_BEHAV = details::FNV1aHash(PROTO_COMMAND_STR_SET_MERIDIAN_BEHAV), PROTO_COMMAND_ID_SET_LOWEST_ALT = details::FNV1aHash(PROTO_COMMAND_STR_SET_LOWEST_ALT), PROTO_COMMAND_ID_SET_TAG_RA = details::FNV1aHash(PROTO_COMMAND_STR_SET_TAG_RA), PROTO_COMMAND_ID_SET_REFRACT_CORR_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_SET_REFRACT_CORR_STATUS), PROTO_COMMAND_ID_SET_ATM_PRES = details::FNV1aHash(PROTO_COMMAND_STR_SET_ATM_PRES), PROTO_COMMAND_ID_SET_ATM_TEMP = details::FNV1aHash(PROTO_COMMAND_STR_SET_ATM_TEMP), PROTO_COMMAND_ID_SET_SPEED_CORR_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_SET_SPEED_CORR_STATUS), PROTO_COMMAND_ID_SET_SETTLE_TIME = details::FNV1aHash(PROTO_COMMAND_STR_SET_SETTLE_TIME), PROTO_COMMAND_ID_SET_TRACK_MERIDIAN_LIMIT = details::FNV1aHash(PROTO_COMMAND_STR_SET_TRACK_MERIDIAN_LIMIT), PROTO_COMMAND_ID_SET_SLEW_MERIDIAN_LIMIT = details::FNV1aHash(PROTO_COMMAND_STR_SET_SLEW_MERIDIAN_LIMIT), PROTO_COMMAND_ID_SET_UNATTEND_FLIP_SETTING = details::FNV1aHash(PROTO_COMMAND_STR_SET_UNATTEND_FLIP_SETTING), PROTO_COMMAND_ID_SET_CURR_SITE_LAT = details::FNV1aHash(PROTO_COMMAND_STR_SET_CURR_SITE_LAT), PROTO_COMMAND_ID_STOP = details::FNV1aHash(PROTO_COMMAND_STR_STOP), PROTO_COMMAND_ID_SET_MAX_SLEW_ABS_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_MAX_SLEW_ABS_RATE), PROTO_COMMAND_ID_SET_WOL_CONF = details::FNV1aHash(PROTO_COMMAND_STR_SET_WOL_CONF), PROTO_COMMAND_ID_SET_MOUNT_IP_ADDR = details::FNV1aHash(PROTO_COMMAND_STR_SET_MOUNT_IP_ADDR), PROTO_COMMAND_ID_SET_TAG_AZ = details::FNV1aHash(PROTO_COMMAND_STR_SET_TAG_AZ), PROTO_COMMAND_ID_TOGGLE_PEC = details::FNV1aHash(PROTO_COMMAND_STR_TOGGLE_PEC), PROTO_COMMAND_ID_PEC_OFF = details::FNV1aHash(PROTO_COMMAND_STR_PEC_OFF), PROTO_COMMAND_ID_PEC_ON = details::FNV1aHash(PROTO_COMMAND_STR_PEC_ON), PROTO_COMMAND_ID_INC_CUSTOM_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_INC_CUSTOM_TRACK_RATE), PROTO_COMMAND_ID_DEC_CUSTOM_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_DEC_CUSTOM_TRACK_RATE), PROTO_COMMAND_ID_LUNAR_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_LUNAR_TRACK_RATE), PROTO_COMMAND_ID_SOLAR_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SOLAR_TRACK_RATE), PROTO_COMMAND_ID_CUSTOM_TRACK_RATE_ON = details::FNV1aHash(PROTO_COMMAND_STR_CUSTOM_TRACK_RATE_ON), PROTO_COMMAND_ID_SIDERAL_TRACK_RATE_ON = details::FNV1aHash(PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON), PROTO_COMMAND_ID_SET_CUSTOM_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_CUSTOM_TRACK_RATE), PROTO_COMMAND_ID_SET_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_TRACK_RATE), PROTO_COMMAND_ID_LUNAR_TRACK_RATE_EXT = details::FNV1aHash(PROTO_COMMAND_STR_LUNAR_TRACK_RATE_EXT), PROTO_COMMAND_ID_SOLAR_TRACK_RATE_EXT = details::FNV1aHash(PROTO_COMMAND_STR_SOLAR_TRACK_RATE_EXT), PROTO_COMMAND_ID_SIDERAL_TRACK_RATE_ON_EXT = details::FNV1aHash(PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON_EXT), PROTO_COMMAND_ID_STOP_TRACK = details::FNV1aHash(PROTO_COMMAND_STR_STOP_TRACK), PROTO_COMMAND_ID_SET_RA_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_RA_TRACK_RATE), PROTO_COMMAND_ID_SET_DEC_TRACK_RATE = details::FNV1aHash(PROTO_COMMAND_STR_SET_DEC_TRACK_RATE), PROTO_COMMAND_ID_DUAL_TRACK_CONF = details::FNV1aHash(PROTO_COMMAND_STR_DUAL_TRACK_CONF), PROTO_COMMAND_ID_DUAL_TRACK_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_DUAL_TRACK_STATUS), PROTO_COMMAND_ID_SET_PREC_MODE = details::FNV1aHash(PROTO_COMMAND_STR_SET_PREC_MODE), PROTO_COMMAND_ID_SET_PREC_MODE_0 = details::FNV1aHash(PROTO_COMMAND_STR_SET_PREC_MODE_0), PROTO_COMMAND_ID_SET_PREC_MODE_1 = details::FNV1aHash(PROTO_COMMAND_STR_SET_PREC_MODE_1), PROTO_COMMAND_ID_SET_PREC_MODE_2 = details::FNV1aHash(PROTO_COMMAND_STR_SET_PREC_MODE_2), PROTO_COMMAND_ID_SET_FINAL_APP_TC = details::FNV1aHash(PROTO_COMMAND_STR_SET_FINAL_APP_TC), PROTO_COMMAND_ID_GET_FINAL_APP_TC = details::FNV1aHash(PROTO_COMMAND_STR_GET_FINAL_APP_TC), PROTO_COMMAND_ID_SET_FINAL_APP_DL = details::FNV1aHash(PROTO_COMMAND_STR_SET_FINAL_APP_DL), PROTO_COMMAND_ID_GET_FINAL_APP_DL = details::FNV1aHash(PROTO_COMMAND_STR_GET_FINAL_APP_DL), PROTO_COMMAND_ID_SET_FINAL_APP_MODE = details::FNV1aHash(PROTO_COMMAND_STR_SET_FINAL_APP_MODE), PROTO_COMMAND_ID_GET_FINAL_APP_MODE = details::FNV1aHash(PROTO_COMMAND_STR_GET_FINAL_APP_MODE), PROTO_COMMAND_ID_GET_ANG_RA_POS = details::FNV1aHash(PROTO_COMMAND_STR_GET_ANG_RA_POS), PROTO_COMMAND_ID_GET_ANG_DEC_POS = details::FNV1aHash(PROTO_COMMAND_STR_GET_ANG_DEC_POS), PROTO_COMMAND_ID_SET_ANG_TAG_RA_POS = details::FNV1aHash(PROTO_COMMAND_STR_SET_ANG_TAG_RA_POS), PROTO_COMMAND_ID_SET_ANG_TAG_DEC_POS = details::FNV1aHash(PROTO_COMMAND_STR_SET_ANG_TAG_DEC_POS), PROTO_COMMAND_ID_GET_ANG_TAG_RA_POS = details::FNV1aHash(PROTO_COMMAND_STR_GET_ANG_TAG_RA_POS), PROTO_COMMAND_ID_GET_ANG_TAG_DEC_POS = details::FNV1aHash(PROTO_COMMAND_STR_GET_ANG_TAG_DEC_POS), PROTO_COMMAND_ID_SLEW_TO_ANG_TAG = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_ANG_TAG), PROTO_COMMAND_ID_SLEW_TO_ANG_TAG_PARK = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_ANG_TAG_PARK), PROTO_COMMAND_ID_PARK_IN_CURR_POS = details::FNV1aHash(PROTO_COMMAND_STR_PARK_IN_CURR_POS), PROTO_COMMAND_ID_SLEW_TO_PARK_ANG_POS = details::FNV1aHash(PROTO_COMMAND_STR_SLEW_TO_PARK_ANG_POS), PROTO_COMMAND_ID_SAVE_PARK_ANG_POS = details::FNV1aHash(PROTO_COMMAND_STR_SAVE_PARK_ANG_POS), PROTO_COMMAND_ID_ORBITAL_ELEM_LOAD = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD), PROTO_COMMAND_ID_ORBITAL_ELEM_NUM = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_NUM), PROTO_COMMAND_ID_ORBITAL_ELEM_GET = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_GET), PROTO_COMMAND_ID_ORBITAL_ELEM_LOAD0 = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD0), PROTO_COMMAND_ID_ORBITAL_ELEM_GET_AZ = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_GET_AZ), PROTO_COMMAND_ID_ORBITAL_ELEM_GET_EQ = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_GET_EQ), PROTO_COMMAND_ID_ORBITAL_ELEM_PRE_TRANS = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_PRE_TRANS), PROTO_COMMAND_ID_ORBITAL_ELEM_SLEW = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW), PROTO_COMMAND_ID_ORBITAL_ELEM_SLEW_STATUS = details::FNV1aHash(PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW_STATUS), PROTO_COMMAND_ID_EMUAP = details::FNV1aHash(PROTO_COMMAND_STR_EMUAP), PROTO_COMMAND_ID_EMULX = details::FNV1aHash(PROTO_COMMAND_STR_EMULX), PROTO_COMMAND_ID_START_COMM_LOG = details::FNV1aHash(PROTO_COMMAND_STR_START_COMM_LOG), PROTO_COMMAND_ID_STOP_COMM_LOG = details::FNV1aHash(PROTO_COMMAND_STR_STOP_COMM_LOG), PROTO_COMMAND_ID_MOUNT_SHUTDOWN = details::FNV1aHash(PROTO_COMMAND_STR_MOUNT_SHUTDOWN), PROTO_COMMAND_ID_GET_COMM_LOG = details::FNV1aHash(PROTO_COMMAND_STR_GET_COMM_LOG), PROTO_COMMAND_ID_GET_EV_LOG = details::FNV1aHash(PROTO_COMMAND_STR_GET_EV_LOG), PROTO_COMMAND_ID_USEROK = details::FNV1aHash(PROTO_COMMAND_STR_USEROK), PROTO_COMMAND_ID_USERWAIT = details::FNV1aHash(PROTO_COMMAND_STR_USERWAIT), PROTO_COMMAND_ID_GETID = details::FNV1aHash(PROTO_COMMAND_STR_GETID), PROTO_COMMAND_ID_ADJUST_TIME = details::FNV1aHash(PROTO_COMMAND_STR_ADJUST_TIME), PROTO_COMMAND_ID_PCS_ADD_ALIGN_TAG = details::FNV1aHash(PROTO_COMMAND_STR_PCS_ADD_ALIGN_TAG), PROTO_COMMAND_ID_PCS_SYNC_WITH_TAG = details::FNV1aHash(PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG), PROTO_COMMAND_ID_PCS_SYNC_WITH_TAG1 = details::FNV1aHash(PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG1), PROTO_COMMAND_ID_PCS_SYNC_CFG = details::FNV1aHash(PROTO_COMMAND_STR_PCS_SYNC_CFG), PROTO_COMMAND_ID_PCS_ALIGN_POINTS_NUM = details::FNV1aHash(PROTO_COMMAND_STR_PCS_ALIGN_POINTS_NUM), PROTO_COMMAND_ID_PCS_DEL_CURR_MODEL = details::FNV1aHash(PROTO_COMMAND_STR_PCS_DEL_CURR_MODEL), PROTO_COMMAND_ID_PCS_GET_ALIGN_POINT_INFO = details::FNV1aHash(PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO), PROTO_COMMAND_ID_PCS_GET_MODEL_INFO = details::FNV1aHash(PROTO_COMMAND_STR_PCS_GET_MODEL_INFO), PROTO_COMMAND_ID_PCS_GET_ALIGN_POINT_INFO1 = details::FNV1aHash(PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO1), PROTO_COMMAND_ID_PCS_DEL_ALIGN_POINT = details::FNV1aHash(PROTO_COMMAND_STR_PCS_DEL_ALIGN_POINT), PROTO_COMMAND_ID_PCS_START = details::FNV1aHash(PROTO_COMMAND_STR_PCS_START), PROTO_COMMAND_ID_PCS_NEW_ALIGN_POINT = details::FNV1aHash(PROTO_COMMAND_STR_PCS_NEW_ALIGN_POINT), PROTO_COMMAND_ID_PCS_STOP = details::FNV1aHash(PROTO_COMMAND_STR_PCS_STOP), PROTO_COMMAND_ID_PCS_GET_MODELS_NUM = details::FNV1aHash(PROTO_COMMAND_STR_PCS_GET_MODELS_NUM), PROTO_COMMAND_ID_PCS_GET_MODEL_NAME = details::FNV1aHash(PROTO_COMMAND_STR_PCS_GET_MODEL_NAME), PROTO_COMMAND_ID_PCS_LOAD_MODEL = details::FNV1aHash(PROTO_COMMAND_STR_PCS_LOAD_MODEL), PROTO_COMMAND_ID_PCS_SAVE_MODEL = details::FNV1aHash(PROTO_COMMAND_STR_PCS_SAVE_MODEL), PROTO_COMMAND_ID_PCS_DEL_MODEL = details::FNV1aHash(PROTO_COMMAND_STR_PCS_DEL_MODEL), }; static constexpr std::array PROTO_COMMAND_DESC = { proto_command_t{PROTO_COMMAND_STR_ACK, PROTO_COMMAND_ID_ACK, ""}, proto_command_t{PROTO_COMMAND_STR_TRACK_STOP, PROTO_COMMAND_ID_TRACK_STOP, "Stop tracking"}, proto_command_t{PROTO_COMMAND_STR_TRACK_START, PROTO_COMMAND_ID_TRACK_START, "Start tracking"}, proto_command_t{PROTO_COMMAND_STR_TEL_ALT, PROTO_COMMAND_ID_TEL_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_TAG_ALT, PROTO_COMMAND_ID_TAG_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_DATE, PROTO_COMMAND_ID_GET_CURR_DATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TEL_DEC, PROTO_COMMAND_ID_GET_TEL_DEC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TAG_DEC, PROTO_COMMAND_ID_GET_TAG_DEC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_SITE_ELEV, PROTO_COMMAND_ID_GET_CURR_SITE_ELEV, ""}, proto_command_t{PROTO_COMMAND_STR_GET_UTC_OFFSET, PROTO_COMMAND_ID_GET_UTC_OFFSET, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_SITE_LONG, PROTO_COMMAND_ID_GET_CURR_SITE_LONG, ""}, proto_command_t{PROTO_COMMAND_STR_GET_HIGHEST_ALT, PROTO_COMMAND_ID_GET_HIGHEST_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_GINFO, PROTO_COMMAND_ID_GINFO, ""}, proto_command_t{PROTO_COMMAND_STR_GINQ, PROTO_COMMAND_ID_GINQ, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MOUNT_IP_ADDR, PROTO_COMMAND_ID_GET_MOUNT_IP_ADDR, ""}, proto_command_t{PROTO_COMMAND_STR_MOUNT_WIRELESS_IP_ADDR, PROTO_COMMAND_ID_MOUNT_WIRELESS_IP_ADDR, ""}, proto_command_t{PROTO_COMMAND_STR_MOUNT_MAC_ADDR, PROTO_COMMAND_ID_MOUNT_MAC_ADDR, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MOUNT_WIRELESS_MAC_ADDR, PROTO_COMMAND_ID_GET_MOUNT_WIRELESS_MAC_ADDR, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_JULDATE, PROTO_COMMAND_ID_GET_CURR_JULDATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC, PROTO_COMMAND_ID_GET_CURR_JULDATE_EXTPREC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_JULDATE_EXTPREC_LEAP_SEC, PROTO_COMMAND_ID_GET_CURR_JULDATE_EXTPREC_LEAP_SEC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_LOCAL_TIME, PROTO_COMMAND_ID_GET_LOCAL_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_LOCAL_DATE_TIME, PROTO_COMMAND_ID_GET_LOCAL_DATE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_UTC_DATE_TIME, PROTO_COMMAND_ID_GET_UTC_DATE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_UTC_UT1_DIFF, PROTO_COMMAND_ID_GET_UTC_UT1_DIFF, ""}, proto_command_t{PROTO_COMMAND_STR_GET_GPS_UTC_DIFF, PROTO_COMMAND_ID_GET_GPS_UTC_DIFF, ""}, proto_command_t{PROTO_COMMAND_STR_GET_NEXT_LEAP_SEC, PROTO_COMMAND_ID_GET_NEXT_LEAP_SEC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MERIDIAN_BEHAV, PROTO_COMMAND_ID_GET_MERIDIAN_BEHAV, ""}, proto_command_t{PROTO_COMMAND_STR_GET_LOWEST_ALT, PROTO_COMMAND_ID_GET_LOWEST_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_PA, PROTO_COMMAND_ID_GET_PA, ""}, proto_command_t{PROTO_COMMAND_STR_GET_PA_SPEED, PROTO_COMMAND_ID_GET_PA_SPEED, ""}, proto_command_t{PROTO_COMMAND_STR_GET_PA_ZENITH, PROTO_COMMAND_ID_GET_PA_ZENITH, ""}, proto_command_t{PROTO_COMMAND_STR_GET_PA_ZENITH_SPEED, PROTO_COMMAND_ID_GET_PA_ZENITH_SPEED, ""}, proto_command_t{PROTO_COMMAND_STR_GET_GUIDING_STATUS, PROTO_COMMAND_ID_GET_GUIDING_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TEL_RA, PROTO_COMMAND_ID_GET_TEL_RA, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TAG_RA, PROTO_COMMAND_ID_GET_TAG_RA, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ATM_PRES, PROTO_COMMAND_ID_GET_ATM_PRES, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ATM_TEMP, PROTO_COMMAND_ID_GET_ATM_TEMP, ""}, proto_command_t{PROTO_COMMAND_STR_GET_SIDERAL_TIME, PROTO_COMMAND_ID_GET_SIDERAL_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_REFRACT_CORR_STATUS, PROTO_COMMAND_ID_GET_REFRACT_CORR_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_SPEED_CORR_STATUS, PROTO_COMMAND_ID_GET_SPEED_CORR_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_GSTAT, PROTO_COMMAND_ID_GSTAT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_SETTLE_TIME, PROTO_COMMAND_ID_GET_SETTLE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TRACK_MERIDIAN_LIMIT, PROTO_COMMAND_ID_GET_TRACK_MERIDIAN_LIMIT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_SLEW_MERIDIAN_LIMIT, PROTO_COMMAND_ID_GET_SLEW_MERIDIAN_LIMIT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_EST_TRACK_TIME, PROTO_COMMAND_ID_GET_EST_TRACK_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_UNATTEND_FLIP_SETTING, PROTO_COMMAND_ID_GET_UNATTEND_FLIP_SETTING, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TRACK_RATE, PROTO_COMMAND_ID_GET_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_CURR_SITE_LAT, PROTO_COMMAND_ID_GET_CURR_SITE_LAT, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MOUNT_TRACK_STATUS, PROTO_COMMAND_ID_GET_MOUNT_TRACK_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TAG_TRACK_STATUS, PROTO_COMMAND_ID_GET_TAG_TRACK_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TAG_DEST_SIDE, PROTO_COMMAND_ID_GET_TAG_DEST_SIDE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FWR_DATE, PROTO_COMMAND_ID_GET_FWR_DATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FWR_NUM, PROTO_COMMAND_ID_GET_FWR_NUM, ""}, proto_command_t{PROTO_COMMAND_STR_GET_PROD_NAME, PROTO_COMMAND_ID_GET_PROD_NAME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FWR_TIME, PROTO_COMMAND_ID_GET_FWR_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_GET_HWR_VERSION, PROTO_COMMAND_ID_GET_HWR_VERSION, ""}, proto_command_t{PROTO_COMMAND_STR_GET_WOL_CONF, PROTO_COMMAND_ID_GET_WOL_CONF, ""}, proto_command_t{PROTO_COMMAND_STR_WLAN_AVAIL, PROTO_COMMAND_ID_WLAN_AVAIL, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TEL_AZ, PROTO_COMMAND_ID_GET_TEL_AZ, ""}, proto_command_t{PROTO_COMMAND_STR_GET_TAG_AZ, PROTO_COMMAND_ID_GET_TAG_AZ, ""}, proto_command_t{PROTO_COMMAND_STR_GET_POINT_STATE, PROTO_COMMAND_ID_GET_POINT_STATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_EMUL_FWR_REV, PROTO_COMMAND_ID_GET_EMUL_FWR_REV, ""}, proto_command_t{PROTO_COMMAND_STR_HOME_SEEK_AND_STORE, PROTO_COMMAND_ID_HOME_SEEK_AND_STORE, ""}, proto_command_t{PROTO_COMMAND_STR_HOME_SEEK_AND_ALIGN, PROTO_COMMAND_ID_HOME_SEEK_AND_ALIGN, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_PARK_hS, PROTO_COMMAND_ID_SLEW_TO_PARK_hS, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_PARK_KA, PROTO_COMMAND_ID_SLEW_TO_PARK_KA, ""}, proto_command_t{PROTO_COMMAND_STR_UNPARK, PROTO_COMMAND_ID_UNPARK, ""}, proto_command_t{PROTO_COMMAND_STR_QUERY_HOME_STATUS, PROTO_COMMAND_ID_QUERY_HOME_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_AZ, PROTO_COMMAND_ID_SLEW_TO_AZ, ""}, proto_command_t{PROTO_COMMAND_STR_MOVE_EAST, PROTO_COMMAND_ID_MOVE_EAST, ""}, proto_command_t{PROTO_COMMAND_STR_MOVE_NORTH, PROTO_COMMAND_ID_MOVE_NORTH, ""}, proto_command_t{PROTO_COMMAND_STR_MOVE_SOUTH, PROTO_COMMAND_ID_MOVE_SOUTH, ""}, proto_command_t{PROTO_COMMAND_STR_MOVE_WEST, PROTO_COMMAND_ID_MOVE_WEST, ""}, proto_command_t{PROTO_COMMAND_STR_CORR_EAST, PROTO_COMMAND_ID_CORR_EAST, ""}, proto_command_t{PROTO_COMMAND_STR_CORR_NORTH, PROTO_COMMAND_ID_CORR_NORTH, ""}, proto_command_t{PROTO_COMMAND_STR_CORR_SOUTH, PROTO_COMMAND_ID_CORR_SOUTH, ""}, proto_command_t{PROTO_COMMAND_STR_CORR_WEST, PROTO_COMMAND_ID_CORR_WEST, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_TAG, PROTO_COMMAND_ID_SLEW_TO_TAG, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_TAG_SIDE, PROTO_COMMAND_ID_SLEW_TO_TAG_SIDE, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_TAG_DISREG_FINE_MOVE, PROTO_COMMAND_ID_SLEW_TO_TAG_DISREG_FINE_MOVE, ""}, proto_command_t{PROTO_COMMAND_STR_SWAP_EAST_WEST, PROTO_COMMAND_ID_SWAP_EAST_WEST, ""}, proto_command_t{PROTO_COMMAND_STR_SWAP_NORTH_SOUTH, PROTO_COMMAND_ID_SWAP_NORTH_SOUTH, ""}, proto_command_t{PROTO_COMMAND_STR_HALT_ALL, PROTO_COMMAND_ID_HALT_ALL, ""}, proto_command_t{PROTO_COMMAND_STR_HALT_EASTWARD, PROTO_COMMAND_ID_HALT_EASTWARD, ""}, proto_command_t{PROTO_COMMAND_STR_HALT_NORTHWARD, PROTO_COMMAND_ID_HALT_NORTHWARD, ""}, proto_command_t{PROTO_COMMAND_STR_HALT_SOUTHWARD, PROTO_COMMAND_ID_HALT_SOUTHWARD, ""}, proto_command_t{PROTO_COMMAND_STR_HALT_WESTWARD, PROTO_COMMAND_ID_HALT_WESTWARD, ""}, proto_command_t{PROTO_COMMAND_STR_FLIP, PROTO_COMMAND_ID_FLIP, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_PROGRESS_STRING, PROTO_COMMAND_ID_SLEW_PROGRESS_STRING, ""}, proto_command_t{PROTO_COMMAND_STR_NUDGE, PROTO_COMMAND_ID_NUDGE, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_CENTERING_RATE, PROTO_COMMAND_ID_SLEW_TO_CENTERING_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_GUIDING_RATE, PROTO_COMMAND_ID_SLEW_TO_GUIDING_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_FIND_RATE, PROTO_COMMAND_ID_SLEW_TO_FIND_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_MAX_RATE, PROTO_COMMAND_ID_SLEW_TO_MAX_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SLEW_RA_RATE, PROTO_COMMAND_ID_SET_SLEW_RA_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SLEW_DEC_RATE, PROTO_COMMAND_ID_SET_SLEW_DEC_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_GUIDING_RATE, PROTO_COMMAND_ID_SET_GUIDING_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_CENTERING_RATE, PROTO_COMMAND_ID_SET_CENTERING_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SLEW_RATE, PROTO_COMMAND_ID_SET_SLEW_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SLEW_ABS_RATE, PROTO_COMMAND_ID_SET_SLEW_ABS_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_SLEW_ABS_RATE, PROTO_COMMAND_ID_GET_SLEW_ABS_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MIN_SLEW_ABS_RATE, PROTO_COMMAND_ID_GET_MIN_SLEW_ABS_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_MAX_SLEW_ABS_RATE, PROTO_COMMAND_ID_GET_MAX_SLEW_ABS_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_GUIDING_RATE, PROTO_COMMAND_ID_GET_GUIDING_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_DEC_BACKLASH, PROTO_COMMAND_ID_SET_DEC_BACKLASH, ""}, proto_command_t{PROTO_COMMAND_STR_SET_RA_BACKLASH, PROTO_COMMAND_ID_SET_RA_BACKLASH, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TAG_ALT, PROTO_COMMAND_ID_SET_TAG_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_SET_BAUD_RATE, PROTO_COMMAND_ID_SET_BAUD_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_LOCAL_DATE, PROTO_COMMAND_ID_SET_LOCAL_DATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TAG_DEC, PROTO_COMMAND_ID_SET_TAG_DEC, ""}, proto_command_t{PROTO_COMMAND_STR_SET_CURR_SITE_LONG, PROTO_COMMAND_ID_SET_CURR_SITE_LONG, ""}, proto_command_t{PROTO_COMMAND_STR_SET_UTC_OFFSET, PROTO_COMMAND_ID_SET_UTC_OFFSET, ""}, proto_command_t{PROTO_COMMAND_STR_SET_HIGHEST_ALT, PROTO_COMMAND_ID_SET_HIGHEST_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_SET_CURR_JULDATE, PROTO_COMMAND_ID_SET_CURR_JULDATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_LOCAL_TIME, PROTO_COMMAND_ID_SET_LOCAL_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_SET_LOCAL_DATE_TIME, PROTO_COMMAND_ID_SET_LOCAL_DATE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_SET_UTC_DATE_TIME, PROTO_COMMAND_ID_SET_UTC_DATE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_SET_MERIDIAN_BEHAV, PROTO_COMMAND_ID_SET_MERIDIAN_BEHAV, ""}, proto_command_t{PROTO_COMMAND_STR_SET_LOWEST_ALT, PROTO_COMMAND_ID_SET_LOWEST_ALT, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TAG_RA, PROTO_COMMAND_ID_SET_TAG_RA, ""}, proto_command_t{PROTO_COMMAND_STR_SET_REFRACT_CORR_STATUS, PROTO_COMMAND_ID_SET_REFRACT_CORR_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_SET_ATM_PRES, PROTO_COMMAND_ID_SET_ATM_PRES, ""}, proto_command_t{PROTO_COMMAND_STR_SET_ATM_TEMP, PROTO_COMMAND_ID_SET_ATM_TEMP, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SPEED_CORR_STATUS, PROTO_COMMAND_ID_SET_SPEED_CORR_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SETTLE_TIME, PROTO_COMMAND_ID_SET_SETTLE_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TRACK_MERIDIAN_LIMIT, PROTO_COMMAND_ID_SET_TRACK_MERIDIAN_LIMIT, ""}, proto_command_t{PROTO_COMMAND_STR_SET_SLEW_MERIDIAN_LIMIT, PROTO_COMMAND_ID_SET_SLEW_MERIDIAN_LIMIT, ""}, proto_command_t{PROTO_COMMAND_STR_SET_UNATTEND_FLIP_SETTING, PROTO_COMMAND_ID_SET_UNATTEND_FLIP_SETTING, ""}, proto_command_t{PROTO_COMMAND_STR_SET_CURR_SITE_LAT, PROTO_COMMAND_ID_SET_CURR_SITE_LAT, ""}, proto_command_t{PROTO_COMMAND_STR_STOP, PROTO_COMMAND_ID_STOP, ""}, proto_command_t{PROTO_COMMAND_STR_SET_MAX_SLEW_ABS_RATE, PROTO_COMMAND_ID_SET_MAX_SLEW_ABS_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_WOL_CONF, PROTO_COMMAND_ID_SET_WOL_CONF, ""}, proto_command_t{PROTO_COMMAND_STR_SET_MOUNT_IP_ADDR, PROTO_COMMAND_ID_SET_MOUNT_IP_ADDR, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TAG_AZ, PROTO_COMMAND_ID_SET_TAG_AZ, ""}, proto_command_t{PROTO_COMMAND_STR_TOGGLE_PEC, PROTO_COMMAND_ID_TOGGLE_PEC, ""}, proto_command_t{PROTO_COMMAND_STR_PEC_OFF, PROTO_COMMAND_ID_PEC_OFF, ""}, proto_command_t{PROTO_COMMAND_STR_PEC_ON, PROTO_COMMAND_ID_PEC_ON, ""}, proto_command_t{PROTO_COMMAND_STR_INC_CUSTOM_TRACK_RATE, PROTO_COMMAND_ID_INC_CUSTOM_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_DEC_CUSTOM_TRACK_RATE, PROTO_COMMAND_ID_DEC_CUSTOM_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_LUNAR_TRACK_RATE, PROTO_COMMAND_ID_LUNAR_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SOLAR_TRACK_RATE, PROTO_COMMAND_ID_SOLAR_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_CUSTOM_TRACK_RATE_ON, PROTO_COMMAND_ID_CUSTOM_TRACK_RATE_ON, ""}, proto_command_t{PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON, PROTO_COMMAND_ID_SIDERAL_TRACK_RATE_ON, ""}, proto_command_t{PROTO_COMMAND_STR_SET_CUSTOM_TRACK_RATE, PROTO_COMMAND_ID_SET_CUSTOM_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_TRACK_RATE, PROTO_COMMAND_ID_SET_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_LUNAR_TRACK_RATE_EXT, PROTO_COMMAND_ID_LUNAR_TRACK_RATE_EXT, ""}, proto_command_t{PROTO_COMMAND_STR_SOLAR_TRACK_RATE_EXT, PROTO_COMMAND_ID_SOLAR_TRACK_RATE_EXT, ""}, proto_command_t{PROTO_COMMAND_STR_SIDERAL_TRACK_RATE_ON_EXT, PROTO_COMMAND_ID_SIDERAL_TRACK_RATE_ON_EXT, ""}, proto_command_t{PROTO_COMMAND_STR_STOP_TRACK, PROTO_COMMAND_ID_STOP_TRACK, ""}, proto_command_t{PROTO_COMMAND_STR_SET_RA_TRACK_RATE, PROTO_COMMAND_ID_SET_RA_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_DEC_TRACK_RATE, PROTO_COMMAND_ID_SET_DEC_TRACK_RATE, ""}, proto_command_t{PROTO_COMMAND_STR_DUAL_TRACK_CONF, PROTO_COMMAND_ID_DUAL_TRACK_CONF, ""}, proto_command_t{PROTO_COMMAND_STR_DUAL_TRACK_STATUS, PROTO_COMMAND_ID_DUAL_TRACK_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_SET_PREC_MODE, PROTO_COMMAND_ID_SET_PREC_MODE, ""}, proto_command_t{PROTO_COMMAND_STR_SET_PREC_MODE_0, PROTO_COMMAND_ID_SET_PREC_MODE_0, ""}, proto_command_t{PROTO_COMMAND_STR_SET_PREC_MODE_1, PROTO_COMMAND_ID_SET_PREC_MODE_1, ""}, proto_command_t{PROTO_COMMAND_STR_SET_PREC_MODE_2, PROTO_COMMAND_ID_SET_PREC_MODE_2, ""}, proto_command_t{PROTO_COMMAND_STR_SET_FINAL_APP_TC, PROTO_COMMAND_ID_SET_FINAL_APP_TC, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FINAL_APP_TC, PROTO_COMMAND_ID_GET_FINAL_APP_TC, ""}, proto_command_t{PROTO_COMMAND_STR_SET_FINAL_APP_DL, PROTO_COMMAND_ID_SET_FINAL_APP_DL, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FINAL_APP_DL, PROTO_COMMAND_ID_GET_FINAL_APP_DL, ""}, proto_command_t{PROTO_COMMAND_STR_SET_FINAL_APP_MODE, PROTO_COMMAND_ID_SET_FINAL_APP_MODE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_FINAL_APP_MODE, PROTO_COMMAND_ID_GET_FINAL_APP_MODE, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ANG_RA_POS, PROTO_COMMAND_ID_GET_ANG_RA_POS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ANG_DEC_POS, PROTO_COMMAND_ID_GET_ANG_DEC_POS, ""}, proto_command_t{PROTO_COMMAND_STR_SET_ANG_TAG_RA_POS, PROTO_COMMAND_ID_SET_ANG_TAG_RA_POS, ""}, proto_command_t{PROTO_COMMAND_STR_SET_ANG_TAG_DEC_POS, PROTO_COMMAND_ID_SET_ANG_TAG_DEC_POS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ANG_TAG_RA_POS, PROTO_COMMAND_ID_GET_ANG_TAG_RA_POS, ""}, proto_command_t{PROTO_COMMAND_STR_GET_ANG_TAG_DEC_POS, PROTO_COMMAND_ID_GET_ANG_TAG_DEC_POS, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_ANG_TAG, PROTO_COMMAND_ID_SLEW_TO_ANG_TAG, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_ANG_TAG_PARK, PROTO_COMMAND_ID_SLEW_TO_ANG_TAG_PARK, ""}, proto_command_t{PROTO_COMMAND_STR_PARK_IN_CURR_POS, PROTO_COMMAND_ID_PARK_IN_CURR_POS, ""}, proto_command_t{PROTO_COMMAND_STR_SLEW_TO_PARK_ANG_POS, PROTO_COMMAND_ID_SLEW_TO_PARK_ANG_POS, ""}, proto_command_t{PROTO_COMMAND_STR_SAVE_PARK_ANG_POS, PROTO_COMMAND_ID_SAVE_PARK_ANG_POS, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD, PROTO_COMMAND_ID_ORBITAL_ELEM_LOAD, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_NUM, PROTO_COMMAND_ID_ORBITAL_ELEM_NUM, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_GET, PROTO_COMMAND_ID_ORBITAL_ELEM_GET, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_LOAD0, PROTO_COMMAND_ID_ORBITAL_ELEM_LOAD0, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_GET_AZ, PROTO_COMMAND_ID_ORBITAL_ELEM_GET_AZ, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_GET_EQ, PROTO_COMMAND_ID_ORBITAL_ELEM_GET_EQ, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_PRE_TRANS, PROTO_COMMAND_ID_ORBITAL_ELEM_PRE_TRANS, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW, PROTO_COMMAND_ID_ORBITAL_ELEM_SLEW, ""}, proto_command_t{PROTO_COMMAND_STR_ORBITAL_ELEM_SLEW_STATUS, PROTO_COMMAND_ID_ORBITAL_ELEM_SLEW_STATUS, ""}, proto_command_t{PROTO_COMMAND_STR_EMUAP, PROTO_COMMAND_ID_EMUAP, ""}, proto_command_t{PROTO_COMMAND_STR_EMULX, PROTO_COMMAND_ID_EMULX, ""}, proto_command_t{PROTO_COMMAND_STR_START_COMM_LOG, PROTO_COMMAND_ID_START_COMM_LOG, ""}, proto_command_t{PROTO_COMMAND_STR_STOP_COMM_LOG, PROTO_COMMAND_ID_STOP_COMM_LOG, ""}, proto_command_t{PROTO_COMMAND_STR_MOUNT_SHUTDOWN, PROTO_COMMAND_ID_MOUNT_SHUTDOWN, ""}, proto_command_t{PROTO_COMMAND_STR_GET_COMM_LOG, PROTO_COMMAND_ID_GET_COMM_LOG, ""}, proto_command_t{PROTO_COMMAND_STR_GET_EV_LOG, PROTO_COMMAND_ID_GET_EV_LOG, ""}, proto_command_t{PROTO_COMMAND_STR_USEROK, PROTO_COMMAND_ID_USEROK, ""}, proto_command_t{PROTO_COMMAND_STR_USERWAIT, PROTO_COMMAND_ID_USERWAIT, ""}, proto_command_t{PROTO_COMMAND_STR_GETID, PROTO_COMMAND_ID_GETID, ""}, proto_command_t{PROTO_COMMAND_STR_ADJUST_TIME, PROTO_COMMAND_ID_ADJUST_TIME, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_ADD_ALIGN_TAG, PROTO_COMMAND_ID_PCS_ADD_ALIGN_TAG, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG, PROTO_COMMAND_ID_PCS_SYNC_WITH_TAG, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_SYNC_WITH_TAG1, PROTO_COMMAND_ID_PCS_SYNC_WITH_TAG1, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_SYNC_CFG, PROTO_COMMAND_ID_PCS_SYNC_CFG, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_ALIGN_POINTS_NUM, PROTO_COMMAND_ID_PCS_ALIGN_POINTS_NUM, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_DEL_CURR_MODEL, PROTO_COMMAND_ID_PCS_DEL_CURR_MODEL, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO, PROTO_COMMAND_ID_PCS_GET_ALIGN_POINT_INFO, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_GET_MODEL_INFO, PROTO_COMMAND_ID_PCS_GET_MODEL_INFO, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_GET_ALIGN_POINT_INFO1, PROTO_COMMAND_ID_PCS_GET_ALIGN_POINT_INFO1, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_DEL_ALIGN_POINT, PROTO_COMMAND_ID_PCS_DEL_ALIGN_POINT, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_START, PROTO_COMMAND_ID_PCS_START, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_NEW_ALIGN_POINT, PROTO_COMMAND_ID_PCS_NEW_ALIGN_POINT, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_STOP, PROTO_COMMAND_ID_PCS_STOP, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_GET_MODELS_NUM, PROTO_COMMAND_ID_PCS_GET_MODELS_NUM, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_GET_MODEL_NAME, PROTO_COMMAND_ID_PCS_GET_MODEL_NAME, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_LOAD_MODEL, PROTO_COMMAND_ID_PCS_LOAD_MODEL, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_SAVE_MODEL, PROTO_COMMAND_ID_PCS_SAVE_MODEL, ""}, proto_command_t{PROTO_COMMAND_STR_PCS_DEL_MODEL, PROTO_COMMAND_ID_PCS_DEL_MODEL, ""}, }; class ControlCommandParser { public: static constexpr char COMM_START_SYMBOL = ':'; static constexpr char COMM_STOP_SYMBOL = '#'; static constexpr char COMM_ACK_SYMBOL = 0x06; }; } // namespace BM700