148 lines
7.5 KiB
C
148 lines
7.5 KiB
C
/////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// file: Link_CCA.h
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Copyright (c) 2024 Acroname Inc. - All Rights Reserved //
|
|
// //
|
|
// This file is part of the BrainStem release. See the license.txt //
|
|
// file included with this package or go to //
|
|
// https://acroname.com/software/brainstem-development-kit //
|
|
// for full license details. //
|
|
/////////////////////////////////////////////////////////////////////
|
|
#ifndef __Link_CCA_H__
|
|
#define __Link_CCA_H__
|
|
|
|
#include "CCA_Core.h"
|
|
#include "aPacket.h"
|
|
|
|
#ifdef CCA_PACK
|
|
#pragma pack(push, CCA_PACK)
|
|
#endif
|
|
/** CCA linkSpec structure - It contains the necessary information for connecting to a BrainStem
|
|
* module. */
|
|
struct linkSpec_CCA {
|
|
unsigned int type;/**< The transport type of this spec. */
|
|
unsigned int serial_num;/**< The serial number of the module */
|
|
unsigned int module;/**< The module address */
|
|
unsigned int router;/**< The BrainStem network router address */
|
|
unsigned int router_serial_num;/**< The BrainStem network router serial number */
|
|
unsigned int model;/**< The model type */
|
|
|
|
unsigned int usb_id;/**< The usb_id of the BrainStem module. */
|
|
|
|
unsigned int ip_address;/**< The IP4 address of the module. */
|
|
unsigned int ip_port;/**< The TCP port for socket connection on the module. */
|
|
|
|
unsigned int baudrate;/**< The serial port baudrate */
|
|
char port[100];/**< The serial port path or name */
|
|
};
|
|
|
|
/** StreamStatusEntry structure - It contains members of streaming entries
|
|
* in the form of key value pairs. Keys are comprised of the devices module address,
|
|
* command, option, index, and subindex API values. */
|
|
struct StreamStatusEntry_CCA {
|
|
unsigned long long key; /**< The stream key (64bit).*/
|
|
unsigned int value; /**< The value associated with the key (32bit). */
|
|
};
|
|
|
|
#ifdef CCA_PACK
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
/// \defgroup LinkEntity Link Entity
|
|
/// The Link class provides link level access to streaming information.
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//Function signature for streaming callbacks.
|
|
/// \param p reference to streaming packet
|
|
/// \param pRef User provided reference
|
|
/// \return non zero error code on failure.
|
|
/// Return value is not currently used.
|
|
typedef unsigned char(*cStreamCallback_t)(const struct aPacket* p, void* pRef);
|
|
|
|
/// Enables streaming for the supplied criteria.
|
|
/// \param id Unique identifier for the internally created stem.
|
|
/// \param result object, containing NO_ERROR or a non zero Error code.
|
|
/// \param moduleAddress Address to filter on.
|
|
/// \param cmd cmd to filter by (supports Wildcards)
|
|
/// \param option option to filter by (supports Wildcards)
|
|
/// \param index index to filter by (supports Wildcards)
|
|
/// \param enable True - Enables streaming; False - disables streaming
|
|
aLIBEXPORT void __stdcall link_enableStream(unsigned int* id,
|
|
struct Result* result,
|
|
const unsigned char moduleAddress,
|
|
const unsigned char cmd,
|
|
const unsigned char option,
|
|
const unsigned char index,
|
|
const bool enable);
|
|
|
|
/// Get linkSpecifier
|
|
/// \param id Unique identifier for the internally created stem.
|
|
/// \param result object, containing NO_ERROR or a non zero Error code.
|
|
/// \param spec - allocated linkspec struct will be filled with spec.
|
|
aLIBEXPORT void __stdcall link_getLinkSpecifier(unsigned int* id, struct Result* result, struct linkSpec_CCA* spec);
|
|
|
|
|
|
/// Registers a callback function based on a specific module, cmd, option, and index.
|
|
/// \param id Unique identifier for the internally created stem.
|
|
/// \param result object, containing NO_ERROR or a non zero Error code.
|
|
/// \param cmd cmd to filter by (supports Wildcards)
|
|
/// \param option option to filter by (supports Wildcards)
|
|
/// \param index index to filter by (supports Wildcards)
|
|
/// \param enable True - installs/updates callback and ref; False - uninstalls callback
|
|
/// \param cb Callback to be executed when a new packet matching the criteria is received.
|
|
/// \param pRef Pointer to user reference for use inside the callback function.
|
|
/// \details ::aErrNotFound - Item not found (uninstalling only)
|
|
/// \details ::aErrNone - success
|
|
aLIBEXPORT void __stdcall link_registerStreamCallback(
|
|
unsigned int* id,
|
|
struct Result* result,
|
|
const unsigned char moduleAddress,
|
|
const unsigned char cmd,
|
|
const unsigned char option,
|
|
const unsigned char index,
|
|
const bool enable,
|
|
cStreamCallback_t cb,
|
|
void* pRef);
|
|
|
|
|
|
/// Gets all available stream values based on the search criteria.
|
|
/// \param id Unique identifier for the internally created stem.
|
|
/// \param result object, containing NO_ERROR or a non zero Error code.
|
|
/// \param moduleAddress Address to filter on (supports Wildcards)
|
|
/// \param cmd cmd to filter by (supports Wildcards)
|
|
/// \param option option to filter by (supports Wildcards)
|
|
/// \param index index to filter by (supports Wildcards)
|
|
/// \param subindex subindex to filter by (supports Wildcards)
|
|
/// \param buffer Buffer of user allocated memory to be filled with stream data
|
|
/// Note: Link::getStreamKeyElement should be used to decode the keys
|
|
/// \param bufferLength Number of elements the buffer can hold.
|
|
/// \details ::aErrParam if status or unloadedSize is null
|
|
/// \details ::aErrNone - success
|
|
aLIBEXPORT void __stdcall link_getStreamStatus(unsigned int* id,
|
|
struct Result* result,
|
|
const unsigned char moduleAddress,
|
|
const unsigned char cmd,
|
|
const unsigned char option,
|
|
const unsigned char index,
|
|
const unsigned char subindex,
|
|
struct StreamStatusEntry_CCA* buffer,
|
|
const unsigned int bufferLength);
|
|
|
|
/// Convenience function to unpack a stream key.
|
|
/// \param key The key to be unpacked
|
|
/// \param element The element to unpack from the key.
|
|
aLIBEXPORT void __stdcall link_getStreamKeyElement(struct Result* result,
|
|
const unsigned long long key,
|
|
const unsigned char element);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|