37#ifndef PROTOCORE_LSV2_H
38#define PROTOCORE_LSV2_H
48#define PC_LSV2_TCP_PORT 19000
50#define PC_LSV2_MNEMONIC_LEN 4
52#define PC_LSV2_HEADER_LEN 8
55#define PC_LSV2_CMD_LOGIN "A_LG"
56#define PC_LSV2_CMD_LOGOUT "A_LO"
57#define PC_LSV2_CMD_FILE_LOAD "R_FL"
58#define PC_LSV2_CMD_FILE_SEND "C_FL"
59#define PC_LSV2_CMD_FILE_DELETE "C_FD"
60#define PC_LSV2_CMD_FILE_INFO "R_FI"
61#define PC_LSV2_CMD_DIR_CHANGE "C_DC"
62#define PC_LSV2_CMD_DIR_MAKE "C_DM"
63#define PC_LSV2_CMD_DIR_DELETE "C_DD"
64#define PC_LSV2_CMD_DIR_READ "R_DR"
65#define PC_LSV2_CMD_DIR_INFO "R_DI"
66#define PC_LSV2_CMD_RUN_INFO "R_RI"
67#define PC_LSV2_CMD_STATUS "R_ST"
68#define PC_LSV2_CMD_VERSION "R_VR"
69#define PC_LSV2_CMD_PARAM "R_PR"
72#define PC_LSV2_RSP_OK "T_OK"
73#define PC_LSV2_RSP_ERROR "T_ER"
74#define PC_LSV2_RSP_FIN "T_FD"
75#define PC_LSV2_RSP_XFER_ERR "T_BD"
76#define PC_LSV2_RSP_LONG "M_CC"
77#define PC_LSV2_RSP_RUN_INFO "S_RI"
78#define PC_LSV2_RSP_STATUS "S_ST"
79#define PC_LSV2_RSP_VERSION "S_VR"
80#define PC_LSV2_RSP_FILE "S_FL"
81#define PC_LSV2_RSP_DIR "S_DR"
84#define PC_LSV2_LOGIN_INSPECT "INSPECT"
85#define PC_LSV2_LOGIN_FILE "FILE"
86#define PC_LSV2_LOGIN_DNC "DNC"
87#define PC_LSV2_LOGIN_MONITOR "MONITOR"
88#define PC_LSV2_LOGIN_DIAG "DIAGNOSTICS"
89#define PC_LSV2_LOGIN_PLCDEBUG "PLCDEBUG"
92enum Lsv2RunInfo : uint16_t
95 LSV2_RI_EXEC_STATE = 23,
96 LSV2_RI_SELECTED_PGM = 24,
97 LSV2_RI_OVERRIDE = 25,
98 LSV2_RI_PGM_STATE = 26,
105 char mnemonic[PC_LSV2_MNEMONIC_LEN];
106 const uint8_t *payload;
115size_t pc_lsv2_build(uint8_t *buf,
size_t cap,
const char *mnemonic,
const uint8_t *payload,
size_t payload_len);
124bool pc_lsv2_parse(
const uint8_t *buf,
size_t len, Lsv2Telegram *out,
size_t *consumed);
129bool pc_lsv2_is(
const Lsv2Telegram *t,
const char *mnemonic4);
137size_t pc_lsv2_build_login(uint8_t *buf,
size_t cap,
const char *login,
const char *password);
144size_t pc_lsv2_build_logout(uint8_t *buf,
size_t cap,
const char *login);
151size_t pc_lsv2_build_filename(uint8_t *buf,
size_t cap,
const char *mnemonic,
const char *filename);
158size_t pc_lsv2_build_run_info(uint8_t *buf,
size_t cap, uint16_t info_code);
163bool pc_lsv2_is_ok(
const Lsv2Telegram *t);
168bool pc_lsv2_is_error(
const Lsv2Telegram *t);
174bool pc_lsv2_error(
const Lsv2Telegram *t, uint8_t *err_class, uint8_t *err_code);
User-facing configuration for ProtoCore.