KETCube
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
ketCube_terminal_common.h File Reference

This file contains shared definitions for the terminal (local and remote) More...

#include <stdlib.h>
#include <string.h>
#include "ketCube_common.h"
#include "ketCube_cfg.h"
#include "ketCube_module_id.h"

Go to the source code of this file.

Data Structures

struct  ketCube_terminal_command_flags_t
 KETCube terminal command flags. More...
 
union  ketCube_terminal_paramSet_t
 KETCube terminal command parameter container. More...
 
struct  ketCube_remoteTerminal_packet_header_t
 KETCube terminal packet header (common) More...
 
struct  ketCube_remoteTerminal_single_cmd_header_t
 KETCube terminal single command packet header. More...
 
struct  ketCube_remoteTerminal_batch_cmd_header_t
 KETCube terminal batch command packet header (header of each command in batch) More...
 
struct  ketCube_terminal_cmd_t
 KETCube terminal command definition. More...
 

Macros

#define KETCUBE_TERMINAL_PARAM_STR_MAX_LENGTH   64
 
#define KETCUBE_TERMINAL_PARAM_BYTE_ARRAY_MAX_LENGTH   32
 

Typedefs

typedef enum ketCube_terminal_command_opcode_t ketCube_terminal_command_opcode_t
 Terminal opcodes. More...
 
typedef enum ketCube_terminal_command_errorCode_t ketCube_terminal_command_errorCode_t
 KETCube terminal command possible error codes. More...
 
typedef struct ketCube_terminal_command_flags_t ketCube_terminal_command_flags_t
 KETCube terminal command flags. More...
 
typedef enum ketCube_terminal_cmdCheckResult_t ketCube_terminal_cmdCheckResult_t
 KETCube command "before execution" check outcomes enum. More...
 
typedef enum ketCube_terminal_paramSet_type_t ketCube_terminal_paramSet_type_t
 KETCube terminal command parameter type definitions. More...
 
typedef union ketCube_terminal_paramSet_t ketCube_terminal_paramSet_t
 KETCube terminal command parameter container. More...
 
typedef struct ketCube_remoteTerminal_packet_header_t ketCube_remoteTerminal_packet_header_t
 KETCube terminal packet header (common) More...
 
typedef struct ketCube_remoteTerminal_single_cmd_header_t ketCube_remoteTerminal_single_cmd_header_t
 KETCube terminal single command packet header. More...
 
typedef struct ketCube_remoteTerminal_batch_cmd_header_t ketCube_remoteTerminal_batch_cmd_header_t
 KETCube terminal batch command packet header (header of each command in batch) More...
 
typedef struct ketCube_terminal_cmd_t ketCube_terminal_cmd_t
 KETCube terminal command definition. More...
 

Enumerations

enum  ketCube_terminal_command_opcode_t { KETCUBE_TERMINAL_OPCODE_CMD = 0, KETCUBE_TERMINAL_OPCODE_BATCH = 1 }
 Terminal opcodes. More...
 
enum  ketCube_terminal_command_errorCode_t {
  KETCUBE_TERMINAL_CMD_ERR_OK = 0, KETCUBE_TERMINAL_CMD_ERR_INVALID_PARAMS, KETCUBE_TERMINAL_CMD_ERR_MEMORY_IO_FAIL, KETCUBE_TERMINAL_CMD_ERR_COMMAND_NOT_FOUND,
  KETCUBE_TERMINAL_CMD_ERR_MODULE_NOT_FOUND, KETCUBE_TERMINAL_CMD_ERR_FAILED_CONTEXT, KETCUBE_TERMINAL_CMD_ERR_UNSPECIFIED_ERROR, KETCUBE_TERMINAL_CMD_ERR_NOT_SUPPORTED,
  KETCUBE_TERMINAL_CMD_ERR_CORE_API_MISMATCH
}
 KETCube terminal command possible error codes. More...
 
enum  ketCube_terminal_cmdCheckResult_t { KETCUBE_CMD_CHECK_OK, KETCUBE_CMD_CHECK_FAILED_DEFINITION, KETCUBE_CMD_CHECK_FAILED_CONTEXT_ONLY_LOCAL, KETCUBE_CMD_CHECK_FAILED_CONTEXT_ONLY_REMOTE }
 KETCube command "before execution" check outcomes enum. More...
 
enum  ketCube_terminal_paramSet_type_t {
  KETCUBE_TERMINAL_PARAMS_NONE = 0, KETCUBE_TERMINAL_PARAMS_BOOLEAN, KETCUBE_TERMINAL_PARAMS_STRING, KETCUBE_TERMINAL_PARAMS_BYTE,
  KETCUBE_TERMINAL_PARAMS_MODULEID, KETCUBE_TERMINAL_PARAMS_INT32, KETCUBE_TERMINAL_PARAMS_UINT32, KETCUBE_TERMINAL_PARAMS_INT32_PAIR,
  KETCUBE_TERMINAL_PARAMS_BYTE_ARRAY
}
 KETCube terminal command parameter type definitions. More...
 

Functions

static void ketCube_terminal_andCmdFlags (ketCube_terminal_command_flags_t *out, ketCube_terminal_command_flags_t *in1, ketCube_terminal_command_flags_t *in2)
 Returns and of flag(s) AND. More...
 
static int ketCube_terminal_ParamSetTypeToCount (ketCube_terminal_paramSet_type_t type)
 Returns parameter count based on param set type. More...
 
static int ketCube_terminal_GetIOParamsMinStaticLength (ketCube_terminal_paramSet_type_t type)
 Returns parameter length in bytes. More...
 
static int ketCube_terminal_GetIOParamsLength (ketCube_terminal_paramSet_type_t type)
 Returns parameter length in bytes. More...
 
void ketCube_terminal_printCmdList (ketCube_terminal_cmd_t *parent, ketCube_terminal_cmd_t *cmdList, ketCube_terminal_command_flags_t *contextFlags)
 Prints command list at index/level. More...
 
ketCube_terminal_cmdCheckResult_t ketCube_terminal_checkCmdContext (ketCube_terminal_cmd_t *command, bool local)
 Check if we can run given command in given context. More...
 
bool ketCube_terminal_checkCmdSubtreeContext (ketCube_terminal_command_flags_t *flags)
 Check if the command definition is valid in given subtree context. More...
 
void ketCube_terminal_execute (ketCube_terminal_cmd_t *cmd, ketCube_terminal_command_flags_t activeFlags)
 

Variables

ketCube_terminal_paramSet_t commandIOParams
 
ketCube_terminal_command_errorCode_t commandErrorCode
 
ketCube_terminal_cmd_t ketCube_terminal_commands []
 KETCube root terminal commands. More...
 

Detailed Description

This file contains shared definitions for the terminal (local and remote)

Author
Martin Ubl
Version
0.1
Date
2018-01-05
Attention

© Copyright (c) 2018 University of West Bohemia in Pilsen All rights reserved.

Developed by: The SmartCampus Team Department of Technologies and Measurement www.smartcampus.cz | www.zcu.cz

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.

Macro Definition Documentation

◆ KETCUBE_TERMINAL_PARAM_BYTE_ARRAY_MAX_LENGTH

#define KETCUBE_TERMINAL_PARAM_BYTE_ARRAY_MAX_LENGTH   32

◆ KETCUBE_TERMINAL_PARAM_STR_MAX_LENGTH

#define KETCUBE_TERMINAL_PARAM_STR_MAX_LENGTH   64

Typedef Documentation

◆ ketCube_remoteTerminal_batch_cmd_header_t

KETCube terminal batch command packet header (header of each command in batch)

◆ ketCube_remoteTerminal_packet_header_t

KETCube terminal packet header (common)

◆ ketCube_remoteTerminal_single_cmd_header_t

KETCube terminal single command packet header.

◆ ketCube_terminal_cmd_t

KETCube terminal command definition.

◆ ketCube_terminal_cmdCheckResult_t

KETCube command "before execution" check outcomes enum.

◆ ketCube_terminal_command_errorCode_t

KETCube terminal command possible error codes.

◆ ketCube_terminal_command_flags_t

KETCube terminal command flags.

◆ ketCube_terminal_command_opcode_t

Terminal opcodes.

◆ ketCube_terminal_paramSet_t

KETCube terminal command parameter container.

◆ ketCube_terminal_paramSet_type_t

KETCube terminal command parameter type definitions.

Enumeration Type Documentation

◆ ketCube_terminal_cmdCheckResult_t

KETCube command "before execution" check outcomes enum.

Enumerator
KETCUBE_CMD_CHECK_OK 
KETCUBE_CMD_CHECK_FAILED_DEFINITION 
KETCUBE_CMD_CHECK_FAILED_CONTEXT_ONLY_LOCAL 
KETCUBE_CMD_CHECK_FAILED_CONTEXT_ONLY_REMOTE 

◆ ketCube_terminal_command_errorCode_t

KETCube terminal command possible error codes.

Enumerator
KETCUBE_TERMINAL_CMD_ERR_OK 
KETCUBE_TERMINAL_CMD_ERR_INVALID_PARAMS 
KETCUBE_TERMINAL_CMD_ERR_MEMORY_IO_FAIL 
KETCUBE_TERMINAL_CMD_ERR_COMMAND_NOT_FOUND 
KETCUBE_TERMINAL_CMD_ERR_MODULE_NOT_FOUND 
KETCUBE_TERMINAL_CMD_ERR_FAILED_CONTEXT 
KETCUBE_TERMINAL_CMD_ERR_UNSPECIFIED_ERROR 
KETCUBE_TERMINAL_CMD_ERR_NOT_SUPPORTED 
KETCUBE_TERMINAL_CMD_ERR_CORE_API_MISMATCH 

◆ ketCube_terminal_command_opcode_t

Terminal opcodes.

Enumerator
KETCUBE_TERMINAL_OPCODE_CMD 
KETCUBE_TERMINAL_OPCODE_BATCH 

◆ ketCube_terminal_paramSet_type_t

KETCube terminal command parameter type definitions.

Enumerator
KETCUBE_TERMINAL_PARAMS_NONE 
KETCUBE_TERMINAL_PARAMS_BOOLEAN 
KETCUBE_TERMINAL_PARAMS_STRING 
KETCUBE_TERMINAL_PARAMS_BYTE 
KETCUBE_TERMINAL_PARAMS_MODULEID 
KETCUBE_TERMINAL_PARAMS_INT32 
KETCUBE_TERMINAL_PARAMS_UINT32 
KETCUBE_TERMINAL_PARAMS_INT32_PAIR 
KETCUBE_TERMINAL_PARAMS_BYTE_ARRAY 

Function Documentation

◆ ketCube_terminal_andCmdFlags()

static void ketCube_terminal_andCmdFlags ( ketCube_terminal_command_flags_t out,
ketCube_terminal_command_flags_t in1,
ketCube_terminal_command_flags_t in2 
)
inlinestatic

Returns and of flag(s) AND.

Parameters
outpointer to output flags
in1pointer to input flags
in2pointer to input flags
Note
this inline function replaces the bitwise AND operation as it is tricky to write AND (&) for bit-structs in a generic way in C

◆ ketCube_terminal_GetIOParamsLength()

static int ketCube_terminal_GetIOParamsLength ( ketCube_terminal_paramSet_type_t  type)
inlinestatic

Returns parameter length in bytes.

◆ ketCube_terminal_GetIOParamsMinStaticLength()

static int ketCube_terminal_GetIOParamsMinStaticLength ( ketCube_terminal_paramSet_type_t  type)
inlinestatic

Returns parameter length in bytes.

◆ ketCube_terminal_ParamSetTypeToCount()

static int ketCube_terminal_ParamSetTypeToCount ( ketCube_terminal_paramSet_type_t  type)
inlinestatic

Returns parameter count based on param set type.

Variable Documentation

◆ ketCube_terminal_commands

ketCube_terminal_cmd_t ketCube_terminal_commands[]
extern

KETCube root terminal commands.