diff options
Diffstat (limited to 'src/bt-vendor_vfs/inc/ant_rx_chardev.h')
-rw-r--r-- | src/bt-vendor_vfs/inc/ant_rx_chardev.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/bt-vendor_vfs/inc/ant_rx_chardev.h b/src/bt-vendor_vfs/inc/ant_rx_chardev.h new file mode 100644 index 0000000..1024dac --- /dev/null +++ b/src/bt-vendor_vfs/inc/ant_rx_chardev.h @@ -0,0 +1,98 @@ +/* + * ANT Stack + * + * Copyright 2011 Dynastream Innovations + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*******************************************************************************\ +* +* FILE NAME: ant_rx_chardev.h +* +* BRIEF: +* This file defines the receive thread function, the ant_rx_thread_info_t +* type for storing the -configuration- <state> of the receive thread, the +* ant_channel_info_t type for storing a channel's (transport path) +* configuration, and an enumeration of all ANT channels (transport paths). +* +* +\*******************************************************************************/ + +#ifndef __ANT_RX_NATIVE_H +#define __ANT_RX_NATIVE_H + +#include "ant_native.h" +#include "ant_hci_defines.h" + +/* same as HCI_MAX_EVENT_SIZE from hci.h, but hci.h is not included for vfs */ +#define ANT_HCI_MAX_MSG_SIZE 260 + +#define ANT_MSG_SIZE_OFFSET ((ANT_U8)0) +#define ANT_MSG_ID_OFFSET ((ANT_U8)1) +#define ANT_MSG_DATA_OFFSET ((ANT_U8)2) + +/* This struct defines the info passed to an rx thread */ +typedef struct { + /* Device path */ + const char *pcDevicePath; + /* File descriptor to read from */ + int iFd; + /* Callback to call with ANT packet */ + ANTNativeANTEventCb fnRxCallback; + /* Flow control response if channel supports it */ + ANT_U8 ucFlowControlResp; + /* Handle to flow control condition */ + pthread_cond_t *pstFlowControlCond; + /* Handle to flow control mutex */ + pthread_mutex_t *pstFlowControlLock; +#ifdef ANT_FLOW_RESEND + /* Length of message to resend on request from chip */ + ANT_U8 ucResendMessageLength; + /* The message to resend on request from chip */ + ANT_U8 *pucResendMessage; +#endif // ANT_FLOW_RESEND +} ant_channel_info_t; + +typedef enum { +#ifdef ANT_DEVICE_NAME // Single transport path + SINGLE_CHANNEL, +#else // Separate data/command paths + DATA_CHANNEL, + COMMAND_CHANNEL, +#endif // Separate data/command paths + NUM_ANT_CHANNELS +} ant_channel_type; + +typedef struct { + /* Thread handle */ + pthread_t stRxThread; + /* Exit condition */ + ANT_U8 ucRunThread; + /* Set state as resetting override */ + ANT_U8 ucChipResetting; + /* Handle to state change lock for crash cleanup */ + pthread_mutex_t *pstEnabledStatusLock; + /* ANT channels */ + ant_channel_info_t astChannels[NUM_ANT_CHANNELS]; + /* Event file descriptor used to interrupt the poll() loop in the rx thread. */ + int iRxShutdownEventFd; +} ant_rx_thread_info_t; + +extern ANTNativeANTStateCb g_fnStateCallback; // TODO State callback should be inside ant_rx_thread_info_t. + +/* This is the rx thread function. It loops reading ANT packets until told to + * exit */ +void *fnRxThread(void *ant_rx_thread_info); + +#endif /* ifndef __ANT_RX_NATIVE_H */ + |