Добавить протокол Altera Logic и общие клиенты прошивки
This commit is contained in:
35
c/set-protocol/include/altera_logic.h
Normal file
35
c/set-protocol/include/altera_logic.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/** Altera logic analyzer UART client. C99, caller-owned memory, no OS/heap.
|
||||
* One request at a time; no automatic retries (ARM is not idempotent).
|
||||
* Initialize aligned storage of la_context_size() bytes, then call la_next,
|
||||
* la_feed and la_tick from one thread. tick receives elapsed milliseconds.
|
||||
*/
|
||||
#ifndef ALTERA_LOGIC_H
|
||||
#define ALTERA_LOGIC_H
|
||||
#include "pcan_abi.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
enum { LA_CONNECTING, LA_READY, LA_CAPTURING, LA_DONE, LA_ERROR };
|
||||
enum { LA_OK, LA_BAD_FRAME, LA_CHECKSUM, LA_DEVICE_ERROR, LA_TIMEOUT,
|
||||
LA_UNSUPPORTED, LA_ARGUMENT, LA_IO_ERROR };
|
||||
enum { LA_STATE, LA_ERROR_CODE, LA_CHANNELS, LA_DEPTH, LA_CLOCK_HZ,
|
||||
LA_FLAGS, LA_TRIGGER_INDEX, LA_READ_COUNT, LA_DIVIDER };
|
||||
PCAN_ABI_API size_t la_context_size(void);
|
||||
PCAN_ABI_API void la_init(void *ctx);
|
||||
/** Return 0 on success. Configuration is immutable throughout this capture. */
|
||||
PCAN_ABI_API int la_start(void *ctx, uint32_t divider, uint32_t mask,
|
||||
uint32_t value, uint32_t edge_mask, uint32_t edge_value);
|
||||
/** Returns 6 when a request is ready, otherwise 0. Capacity must be >=6. */
|
||||
PCAN_ABI_API size_t la_next(void *ctx, uint8_t *out, size_t capacity);
|
||||
PCAN_ABI_API void la_feed(void *ctx, const uint8_t *data, size_t size);
|
||||
PCAN_ABI_API void la_tick(void *ctx, uint32_t elapsed_ms);
|
||||
PCAN_ABI_API void la_fail(void *ctx, uint32_t code);
|
||||
PCAN_ABI_API uint32_t la_get(const void *ctx, uint32_t field);
|
||||
PCAN_ABI_API size_t la_samples(const void *ctx, uint16_t *out, size_t capacity);
|
||||
/** Offline fixture, never communicates with hardware or claims a real trigger. */
|
||||
PCAN_ABI_API void la_demo_init(void *ctx);
|
||||
PCAN_ABI_API int la_demo_capture(void *ctx, uint32_t divider);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
46
c/set-protocol/include/altera_stream.h
Normal file
46
c/set-protocol/include/altera_stream.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/** SETCAN/GAS Altera Logic online stream, shared by CAN and UART.
|
||||
* Caller-owned context; one serialized caller. No heap, OS or Qt dependencies.
|
||||
*/
|
||||
#ifndef ALTERA_STREAM_H
|
||||
#define ALTERA_STREAM_H
|
||||
#include "pcan_abi.h"
|
||||
#include "pcan_frame.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define LAS_DEVICE_TYPE 6U
|
||||
#define LAS_DEVICE_ID 14U
|
||||
#define LAS_GAS_META 0xFE00U
|
||||
#define LAS_GAS_DATA 0xFF00U
|
||||
#define LAS_CAPACITY 8192U
|
||||
#define LAS_TAG 0x4C01U
|
||||
enum { LAS_COUNT, LAS_PERIOD_NS, LAS_SESSION, LAS_RECEIVED, LAS_MISSING,
|
||||
LAS_DUPLICATES, LAS_INVALID, LAS_IGNORED, LAS_CRC_ERRORS, LAS_HAS_META };
|
||||
PCAN_ABI_API size_t las_context_size(void);
|
||||
PCAN_ABI_API int las_init(void *ctx, uint32_t device_id);
|
||||
PCAN_ABI_API void las_can(void *ctx, uint32_t id, const uint8_t *data, size_t size,
|
||||
uint32_t extended, uint32_t remote);
|
||||
PCAN_ABI_API void las_uart(void *ctx, const uint8_t *data, size_t size);
|
||||
PCAN_ABI_API uint32_t las_get(const void *ctx, uint32_t field);
|
||||
/** Chronological bounded history. breaks[i]=1 marks a discontinuity before i. */
|
||||
PCAN_ABI_API size_t las_snapshot(const void *ctx, uint64_t *indices, uint16_t *samples,
|
||||
uint8_t *breaks, size_t capacity);
|
||||
/** Sparse step trace for rendering; capacity >= 2*LAS_COUNT, move=pen-up. */
|
||||
PCAN_ABI_API size_t las_trace(const void *ctx, uint32_t channel, uint64_t *indices,
|
||||
uint8_t *levels, uint8_t *moves, size_t capacity);
|
||||
PCAN_ABI_API uint32_t las_device_type(void);
|
||||
PCAN_ABI_API uint32_t las_device_id(void);
|
||||
PCAN_ABI_API const char *las_device_name(void);
|
||||
PCAN_ABI_API void las_demo_step(void *ctx, uint32_t count);
|
||||
/** Device-side packet builders; return zero for invalid arguments.
|
||||
* uart=0: 8-byte CAN data + *id; uart=1: complete AA55 transport + *id.
|
||||
* Same builders are used by firmware ports, tests and the demo producer.
|
||||
*/
|
||||
PCAN_ABI_API size_t las_metadata(uint32_t device, uint32_t session, uint32_t period_ns,
|
||||
uint32_t uart, uint32_t *id, uint8_t *out, size_t capacity);
|
||||
PCAN_ABI_API size_t las_data(uint32_t device, uint32_t session, uint32_t index,
|
||||
uint32_t sample, uint32_t uart, uint32_t *id, uint8_t *out, size_t capacity);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user