diff options
Diffstat (limited to 'location/izat_api')
-rw-r--r-- | location/izat_api/Android.mk | 10 | ||||
-rw-r--r-- | location/izat_api/IzatRemoteApi.h | 161 | ||||
-rw-r--r-- | location/izat_api/izat_remote_api.h | 135 |
3 files changed, 306 insertions, 0 deletions
diff --git a/location/izat_api/Android.mk b/location/izat_api/Android.mk new file mode 100644 index 0000000..d225b9a --- /dev/null +++ b/location/izat_api/Android.mk @@ -0,0 +1,10 @@ +ifneq ($(BUILD_TINY_ANDROID),true) + +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := izat_remote_api_headers +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) +include $(BUILD_HEADER_LIBRARY) + +endif # not BUILD_TINY_ANDROID diff --git a/location/izat_api/IzatRemoteApi.h b/location/izat_api/IzatRemoteApi.h new file mode 100644 index 0000000..ce911ac --- /dev/null +++ b/location/izat_api/IzatRemoteApi.h @@ -0,0 +1,161 @@ +/*============================================================================= + Copyright (c) 2016, The Linux Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + =============================================================================*/ + +#ifndef __IZATREMOTEAPIS_H__ +#define __IZATREMOTEAPIS_H__ + +#include <gps_extended_c.h> +#include <izat_remote_api.h> +#include <string> +#include <stdio.h> +namespace qc_loc_fw { + class InPostcard; +} + +namespace izat_remote_api { + +class IzatNotifierProxy; + +struct OutCard; + +class IzatNotifier { +protected: + IzatNotifierProxy* const mNotifierProxy; + IzatNotifier(const char* const tag, const OutCard* subCard); + virtual ~IzatNotifier(); +public: + virtual void handleMsg(qc_loc_fw::InPostcard * const in_card) = 0; +}; + + +class LocationUpdaterBase : public IzatNotifier { + const remoteClientInfo *mClientInfo; + const void* mClientData; +protected: + static OutCard* getLocSubscriptionCard(const char* name, uint32_t streamType); +public: + std::string mName; + inline LocationUpdaterBase(const std::string sName, + const OutCard* sSubscriptionCard, + const remoteClientInfo *pClientInfo, + const void* clientData) : + IzatNotifier(sName.c_str(), sSubscriptionCard), + mClientInfo(pClientInfo), mClientData(clientData), mName(sName) {} + + virtual inline ~LocationUpdaterBase() {} + virtual void handleMsg(qc_loc_fw::InPostcard * const in_card) final; +}; + +class LocationUpdater : public LocationUpdaterBase { + static const OutCard* sSubscriptionCard; +public: + static const char sName[]; + inline LocationUpdater(remoteClientInfo *pClientInfo, const void* clientData) : + LocationUpdaterBase(sName, sSubscriptionCard, + pClientInfo, clientData) {} + + virtual inline ~LocationUpdater() {} +}; + +class RawLocationUpdater : public LocationUpdaterBase { + static const OutCard* sRawSubscriptionCard; +public: + static const char sName[]; + inline RawLocationUpdater(remoteClientInfo *pClientInfo, const void* clientData) : + LocationUpdaterBase(sName, sRawSubscriptionCard, + pClientInfo, clientData) {} + + virtual inline ~RawLocationUpdater() {} +}; + +class SstpUpdater : public IzatNotifier { + static const char* const sLatTag; + static const char* const sLonTag; + static const char* const sUncTag; + static const char* const sUncConfTag; + +protected: + inline SstpUpdater() : IzatNotifier(sName, nullptr) {} + virtual inline ~SstpUpdater() {} +public: + static const char sName[]; + virtual void handleMsg(qc_loc_fw::InPostcard * const in_card) final; + void stop(); + virtual void errReport(const char* errStr) = 0; + virtual void siteUpdate(const char* name, double lat, double lon, + float unc, int32_t uncConfidence) = 0; + virtual void mccUpdate(uint32_t mcc, const char* confidence) = 0; +}; + +class SvInfoUpdaterBase : public IzatNotifier { + const remoteClientInfo *mClientInfo; + const void* mClientData; + +protected: + static OutCard* getSvInfoSubscriptionCard(const char* name, + uint32_t streamType); +public: + std::string mName; + inline SvInfoUpdaterBase(const std::string sName, + const OutCard* sSubscriptionCard, + remoteClientInfo *pClientInfo, + const void* clientData) : + IzatNotifier(sName.c_str(), sSubscriptionCard), + mClientInfo(pClientInfo), mClientData(clientData), mName(sName) {} + + virtual inline ~SvInfoUpdaterBase() {} + virtual void handleMsg(qc_loc_fw::InPostcard * const in_card) final; +}; + +class SvInfoUpdater : public SvInfoUpdaterBase { + static const OutCard* sSubscriptionCard; +public: + static const char sName[]; + inline SvInfoUpdater(remoteClientInfo *pClientInfo, const void* clientData) : + SvInfoUpdaterBase(sName, sSubscriptionCard, + pClientInfo, clientData) {} + + virtual inline ~SvInfoUpdater() {} +}; + +class RawSvInfoUpdater : public SvInfoUpdaterBase { + static const OutCard* sRawSubscriptionCard; +public: + static const char sName[]; + inline RawSvInfoUpdater(remoteClientInfo *pClientInfo, const void* clientData) : + SvInfoUpdaterBase(sName, sRawSubscriptionCard, + pClientInfo, clientData) {} + + virtual inline ~RawSvInfoUpdater() {} +}; + +} // izat_remote_api + +#endif //__IZATREMOTEAPIS_H__ + diff --git a/location/izat_api/izat_remote_api.h b/location/izat_api/izat_remote_api.h new file mode 100644 index 0000000..b5767bf --- /dev/null +++ b/location/izat_api/izat_remote_api.h @@ -0,0 +1,135 @@ +/*============================================================================= + Copyright (c) 2016, The Linux Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + =============================================================================*/ + +#ifndef __IZAT_REMOTE_APIS_H__ +#define __IZAT_REMOTE_APIS_H__ + +#include <gps_extended_c.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*locationUpdateCb)(UlpLocation *location, + GpsLocationExtended *locExtended, + void* clientData); + +typedef void (*svRptUpdateCb)(GnssSvNotification *svNotify, + void* clientData); + +typedef void (*nmeaUpdateCb)(UlpNmea *nmea, void* clientData); + +typedef struct { + + locationUpdateCb locCb; + svRptUpdateCb svReportCb; + nmeaUpdateCb nmeaCb; + +}remoteClientInfo; +/* registers a client callback structure for listening to final location updates + pClientInfo - pointer to remoteClientInfo structure + Can not be NULL. + clientData - an opaque data pointer from client. This pointer will be + provided back when the callbacak is called. + This can be used by client to store application context + or statemachine etc. + Can be NULL. + return: an opaque pointer that serves as a request handle. This handle + to be fed to the unregisterLocationUpdater() call. +*/ +void* registerLocationUpdater(remoteClientInfo *pClientInfo, void* clientData); + +/* unregisters the client callback + locationUpdaterHandle - the opaque pointer from the return of + registerLocationUpdater() +*/ +void unregisterLocationUpdater(void* locationUpdaterHandle); + +/* registers a client callback structure for listening to raw location updates + pClientInfo - pointer to remoteClientInfo structure + Can not be NULL. + clientData - an opaque data pointer from client. This pointer will be + provided back when the callback is called. + This can be used by client to store application context + or statemachine etc. + Can be NULL. + return: an opaque pointer that serves as a request handle. This handle + to be fed to the unregisterRawLocationUpdater() call. +*/ +void* registerRawLocationUpdater(remoteClientInfo *pClientInfo, void* clientData); + +/* unregisters the client callback + locationUpdaterHandle - the opaque pointer from the return of + registerRawLocationUpdater() +*/ +void unregisterRawLocationUpdater(void* locationUpdaterHandle); + +typedef void (*errReportCb)(const char* errStr, void* clientData); +typedef void (*sstpSiteUpdateCb)(const char* name, double lat, double lon, + float unc, int32_t uncConfidence, + void* clientData); +typedef void (*sstpMccUpdateCb)(uint32_t mcc, const char* confidence, + void* clientData); +/* registers a client callback for listening to SSTP updates + siteCb - site info callback function pointer implemented by client + Can not be NULL. + mccCb - MCC info callback function pointer implemented by client + Can not be NULL. + errCb - callback to receive error report in string format, in case + of any error that might happen, and no siteCb or mccCb can + be called. + Can be NULL. + clientData - an opaque data pointer from client. This pointer will be + provided back when the locationCb() callbacak is called. + This can be used by client to store application context + or statemachine etc. + Can be NULL. + return: an opaque pointer that serves as a request handle. This handle + is to be fed to theunregisterLocationUpdater() call. +*/ +void* registerSstpUpdater(sstpSiteUpdateCb siteCb, sstpMccUpdateCb mccCb, + errReportCb errCb, void* clientData); + +/* unregisters the client callback + sstpUpdaterHandle - the opaque pointer from the return of + registerLocationUpdater() +*/ +void unregisterSstpUpdater(void* sstpUpdaterHandle); + +/* stop the current burst of SSTP updates (until next triggering event) + sstpUpdaterHandle - the opaque pointer from the return of + registerLocationUpdater() +*/ +void stopSstpUpdate(void* sstpUpdaterHandle); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif //__IZAT_REMOTE_APIS_H__ |