/** ---------------------------------------------------------------------- * * 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 #include #include #include #include #include /* 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