mirror of https://github.com/rusefi/bldc.git
added packet interface to lispif_c_lib
This commit is contained in:
parent
7f8a7b2aec
commit
bccb2cc245
|
@ -58,11 +58,12 @@ typedef lbm_value (*extension_fptr)(lbm_value*,lbm_uint);
|
|||
#define LBM_TYPE_U64 0x50000000u
|
||||
#define LBM_TYPE_FLOAT 0x60000000u
|
||||
#define LBM_TYPE_DOUBLE 0x70000000u
|
||||
#define LBM_TYPE_ARRAY 0xD0000000u
|
||||
#define LBM_TYPE_REF 0xE0000000u
|
||||
#define LBM_TYPE_STREAM 0xF0000000u
|
||||
#define LBM_NON_CONS_POINTER_TYPE_LAST 0xF0000000u
|
||||
#define LBM_POINTER_TYPE_LAST 0xF0000000u
|
||||
#define LBM_TYPE_ARRAY 0x80000000u
|
||||
#define LBM_TYPE_REF 0x90000000u
|
||||
#define LBM_TYPE_STREAM 0xA0000000u
|
||||
#define LBM_TYPE_CUSTOM 0xB0000000u
|
||||
#define LBM_NON_CONS_POINTER_TYPE_LAST 0xB0000000u
|
||||
#define LBM_POINTER_TYPE_LAST 0xB0000000u
|
||||
|
||||
#define LBM_GC_MASK 0x00000002u
|
||||
#define LBM_GC_MARKED 0x00000002u
|
||||
|
|
|
@ -137,6 +137,23 @@ typedef enum {
|
|||
VESC_PIN_MODE_ANALOG,
|
||||
} VESC_PIN_MODE;
|
||||
|
||||
#ifndef PACKET_MAX_PL_LEN
|
||||
#define PACKET_MAX_PL_LEN 512
|
||||
#endif
|
||||
|
||||
#define PACKET_BUFFER_LEN (PACKET_MAX_PL_LEN + 8)
|
||||
|
||||
// Types
|
||||
typedef struct {
|
||||
void(*send_func)(unsigned char *data, unsigned int len);
|
||||
void(*process_func)(unsigned char *data, unsigned int len);
|
||||
unsigned int rx_read_ptr;
|
||||
unsigned int rx_write_ptr;
|
||||
int bytes_left;
|
||||
unsigned char rx_buffer[PACKET_BUFFER_LEN];
|
||||
unsigned char tx_buffer[PACKET_BUFFER_LEN];
|
||||
} PACKET_STATE_t;
|
||||
|
||||
/*
|
||||
* Function pointer struct. Always add new function pointers to the end in order to not
|
||||
* break compatibility with old binaries.
|
||||
|
@ -287,6 +304,14 @@ typedef struct {
|
|||
bool (*lbm_unblock_ctx)(lbm_cid, lbm_value);
|
||||
lbm_cid (*lbm_get_current_cid)(void);
|
||||
|
||||
// Packets
|
||||
void (*packet_init)(void (*s_func)(unsigned char *, unsigned int),
|
||||
void (*p_func)(unsigned char *, unsigned int),
|
||||
PACKET_STATE_t *);
|
||||
void (*packet_reset)(PACKET_STATE_t *);
|
||||
void (*packet_process_byte)(uint8_t, PACKET_STATE_t *);
|
||||
void (*packet_send_packet)(unsigned char *, unsigned int len, PACKET_STATE_t *);
|
||||
|
||||
} vesc_c_if;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -31,6 +31,14 @@
|
|||
#include "app.h"
|
||||
#include "mempools.h"
|
||||
|
||||
// Function prototypes otherwise missing
|
||||
void packet_init(void (*s_func)(unsigned char *data, unsigned int len),
|
||||
void (*p_func)(unsigned char *data, unsigned int len), PACKET_STATE_t *state);
|
||||
void packet_reset(PACKET_STATE_t *state);
|
||||
void packet_process_byte(uint8_t rx_data, PACKET_STATE_t *state);
|
||||
void packet_send_packet(unsigned char *data, unsigned int len, PACKET_STATE_t *state);
|
||||
|
||||
|
||||
typedef struct {
|
||||
char *name;
|
||||
void *arg;
|
||||
|
@ -493,6 +501,12 @@ lbm_value ext_load_native_lib(lbm_value *args, lbm_uint argn) {
|
|||
cif.cif.lbm_unblock_ctx = lbm_unblock_ctx;
|
||||
cif.cif.lbm_get_current_cid = lbm_get_current_cid;
|
||||
|
||||
//packets
|
||||
cif.cif.packet_init = packet_init;
|
||||
cif.cif.packet_reset = packet_reset;
|
||||
cif.cif.packet_process_byte = packet_process_byte;
|
||||
cif.cif.packet_send_packet = packet_send_packet;
|
||||
|
||||
lib_init_done = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue