mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-22 08:18:32 +03:00
import libosmocore msgb handling (and dependencies)
This is supposed to be replaced with upstream libosmocore, as soon as that has a proper maintained embedded build (again).
This commit is contained in:
@@ -1,61 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define RCTX_SIZE_LARGE 960
|
||||
#define RCTX_SIZE_SMALL 320
|
||||
#define MAX_HDRSIZE sizeof(struct openpcd_hdr)
|
||||
|
||||
#include <stdint.h>
|
||||
#include "osmocom/core/linuxlist.h"
|
||||
|
||||
#define __ramfunc
|
||||
|
||||
enum req_ctx_state {
|
||||
/* free to be allocated */
|
||||
RCTX_S_FREE,
|
||||
|
||||
/* USB -> UART */
|
||||
/* In USB driver, waiting for data from host */
|
||||
RCTX_S_USB_RX_BUSY,
|
||||
/* somewhere in the main loop */
|
||||
RCTX_S_MAIN_PROCESSING,
|
||||
/* pending (in queue) for transmission on UART */
|
||||
RCTX_S_UART_TX_PENDING,
|
||||
/* currently in active transmission on UART */
|
||||
RCTX_S_UART_TX_BUSY,
|
||||
|
||||
/* UART -> USB */
|
||||
/* currently in active reception on UART */
|
||||
RCTX_S_UART_RX_BUSY,
|
||||
/* pending (in queue) for transmission over USB to host */
|
||||
RCTX_S_USB_TX_PENDING,
|
||||
/* currently in transmission over USB to host */
|
||||
RCTX_S_USB_TX_BUSY,
|
||||
|
||||
/* number of states */
|
||||
RCTX_STATE_COUNT
|
||||
};
|
||||
|
||||
struct req_ctx {
|
||||
/* if this req_ctx is on a queue... */
|
||||
struct llist_head list;
|
||||
uint32_t ep;
|
||||
|
||||
/* enum req_ctx_state */
|
||||
volatile uint32_t state;
|
||||
/* size of th 'data' buffer */
|
||||
uint16_t size;
|
||||
/* total number of used bytes in buffer */
|
||||
uint16_t tot_len;
|
||||
/* index into the buffer, user specific */
|
||||
uint16_t idx;
|
||||
/* actual data buffer */
|
||||
uint8_t *data;
|
||||
};
|
||||
|
||||
extern void req_ctx_init(void);
|
||||
extern struct req_ctx __ramfunc *req_ctx_find_get(int large, uint32_t old_state, uint32_t new_state);
|
||||
extern struct req_ctx *req_ctx_find_busy(void);
|
||||
extern void req_ctx_set_state(struct req_ctx *ctx, uint32_t new_state);
|
||||
extern void req_ctx_put(struct req_ctx *ctx);
|
||||
extern uint8_t req_ctx_num(struct req_ctx *ctx);
|
||||
unsigned int req_ctx_count(uint32_t state);
|
||||
Reference in New Issue
Block a user