| /** ---------------------------------------------------------------------- |
| * |
| * Copyright (C) 2016 ST Microelectronics S.A. |
| * |
| * 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. |
| * |
| * |
| ----------------------------------------------------------------------*/ |
| #ifndef __HALCORE_H_ |
| #define __HALCORE_H_ |
| |
| #include <android/log.h> |
| #include <errno.h> |
| #include <pthread.h> |
| #include <stdbool.h> |
| #include <stdint.h> |
| #include <stdlib.h> |
| |
| /* events sent from the callback */ |
| #define HAL_EVENT_DSWRITE 1 /* write raw HAL data downstream */ |
| #define HAL_EVENT_DATAIND 2 /* new NCI frame received from CLF */ |
| #define HAL_EVENT_LINKLOST 3 /* connection/link lost */ |
| #define HAL_EVENT_ERROR 4 /* protocol got into an error state */ |
| #define HAL_EVENT_JUNKRECEIVED \ |
| 5 /* protocol signals that junk has been received. resyncronization */ |
| |
| #define HAL_EVENT_TIMER_TIMEOUT 6 |
| |
| /* flags to be passed to HalCreate */ |
| |
| #define HAL_WRAPPER_TIMEOUT_EVT 7 |
| |
| #define HAL_FLAG_NO_DEBUG 0 /* disable debug output */ |
| #define HAL_FLAG_DEBUG 1 /* enable debug output */ |
| |
| typedef enum { |
| HAL_WRAPPER_STATE_CLOSED, |
| HAL_WRAPPER_STATE_OPEN, |
| HAL_WRAPPER_STATE_OPEN_CPLT, |
| HAL_WRAPPER_STATE_NFC_ENABLE_ON, |
| HAL_WRAPPER_STATE_PROP_CONFIG, |
| HAL_WRAPPER_STATE_READY, |
| HAL_WRAPPER_STATE_CLOSING, |
| HAL_WRAPPER_STATE_EXIT_HIBERNATE_INTERNAL, |
| HAL_WRAPPER_STATE_UPDATE, |
| HAL_WRAPPER_STATE_APPLY_CUSTOM_PARAM, |
| HAL_WRAPPER_STATE_APPLY_UWB_PARAM, |
| HAL_WRAPPER_STATE_SET_ACTIVERW_TIMER, |
| } hal_wrapper_state_e; |
| |
| /* callback function to communicate from HAL Core with the outside world */ |
| typedef void (*HAL_CALLBACK)(void* context, uint32_t event, const void* data, |
| size_t length); |
| |
| /* flags to be passed to HALCreate */ |
| |
| typedef void* HALHANDLE; |
| |
| HALHANDLE HalCreate(void* context, HAL_CALLBACK callback, uint32_t flags); |
| |
| void HalDestroy(HALHANDLE hHAL); |
| |
| /* send an NCI frame from the HOST to the CLF */ |
| bool HalSendDownstream(HALHANDLE hHAL, const uint8_t* data, size_t size); |
| |
| // HAL WRAPPER |
| bool HalSendDownstreamTimer(HALHANDLE hHAL, const uint8_t* data, size_t size, |
| uint32_t duration); |
| bool HalSendDownstreamTimer(HALHANDLE hHAL, uint32_t duration); |
| bool HalSendDownstreamStopTimer(HALHANDLE hHAL); |
| |
| /* send a complete HDLC frame from the CLF to the HOST */ |
| bool HalSendUpstream(HALHANDLE hHAL, const uint8_t* data, size_t size); |
| |
| void hal_wrapper_set_state(hal_wrapper_state_e new_wrapper_state); |
| void I2cResetPulse(); |
| #endif |