text: /* Copyright (c) 2011-2013, 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 LOC_ENG_MSG_H
  #define LOC_ENG_MSG_H
  
  
  #include <hardware/gps.h>
  #include <gps_extended.h>
  #include <stdlib.h>
  #include <string.h>
  #include <log_util.h>
  #include <loc_eng_log.h>
  #include <loc_eng.h>
  #include <MsgTask.h>
  #include <LocEngAdapter.h>
  
  #ifndef SSID_BUF_SIZE
      #define SSID_BUF_SIZE (32+1)
  #endif
  #ifdef USE_GLIB
  
  #include <glib.h>
  
  #endif /* USE_GLIB */
  #include "platform_lib_includes.h"
  
  #ifdef __cplusplus
  extern "C" {
  #endif /* __cplusplus */
  
  using namespace loc_core;
  
  struct LocEngPositionMode : public LocMsg {
      LocEngAdapter* mAdapter;
      const LocPosMode mPosMode;
      LocEngPositionMode(LocEngAdapter* adapter, LocPosMode &mode);
      virtual void proc() const;
      virtual void log() const;
      void send() const;
  };
  
  
  struct LocEngStartFix : public LocMsg {
      LocEngAdapter* mAdapter;
      LocEngStartFix(LocEngAdapter* adapter);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngStopFix : public LocMsg {
      LocEngAdapter* mAdapter;
      LocEngStopFix(LocEngAdapter* adapter);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngReportPosition : public LocMsg {
      LocAdapterBase* mAdapter;
      const UlpLocation mLocation;
      const GpsLocationExtended mLocationExtended;
      const void* mLocationExt;
      const enum loc_sess_status mStatus;
      const LocPosTechMask mTechMask;
      LocEngReportPosition(LocAdapterBase* adapter,
                           UlpLocation &loc,
                           GpsLocationExtended &locExtended,
                           void* locExt,
                           enum loc_sess_status st,
                           LocPosTechMask technology);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngReportSv : public LocMsg {
      LocAdapterBase* mAdapter;
      const GpsSvStatus mSvStatus;
      const GpsLocationExtended mLocationExtended;
      const void* mSvExt;
      LocEngReportSv(LocAdapterBase* adapter,
                     GpsSvStatus &sv,
                     GpsLocationExtended &locExtended,
                     void* svExtended);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngReportStatus : public LocMsg {
      LocAdapterBase* mAdapter;
      const GpsStatusValue mStatus;
      LocEngReportStatus(LocAdapterBase* adapter,
                         GpsStatusValue engineStatus);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngReportNmea : public LocMsg {
      void* mLocEng;
      char* const mNmea;
      const int mLen;
      LocEngReportNmea(void* locEng,
                       const char* data, int len);
      inline virtual ~LocEngReportNmea()
      {
          delete[] mNmea;
      }
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngReportXtraServer : public LocMsg {
      void* mLocEng;
      int mMaxLen;
      char *mServers;
      LocEngReportXtraServer(void* locEng,
                             const char *url1, const char *url2,
                             const char *url3, const int maxlength);
      inline virtual ~LocEngReportXtraServer()
      {
          delete[] mServers;
      }
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngSuplEsOpened : public LocMsg {
      void* mLocEng;
      LocEngSuplEsOpened(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngSuplEsClosed : public LocMsg {
      void* mLocEng;
      LocEngSuplEsClosed(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngRequestSuplEs : public LocMsg {
      void* mLocEng;
      const int mID;
      LocEngRequestSuplEs(void* locEng, int id);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngRequestATL : public LocMsg {
      void* mLocEng;
      const int mID;
      const AGpsExtType mType;
      LocEngRequestATL(void* locEng, int id,
                       AGpsExtType agps_type);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngReleaseATL : public LocMsg {
      void* mLocEng;
      const int mID;
      LocEngReleaseATL(void* locEng, int id);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngReqRelBIT : public LocMsg {
      void* mLocEng;
      const AGpsExtType mType;
      const int mIPv4Addr;
      char* const mIPv6Addr;
      const bool mIsReq;
      LocEngReqRelBIT(void* instance, AGpsExtType type,
                      int ipv4, char* ipv6, bool isReq);
      virtual ~LocEngReqRelBIT();
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngReqRelWifi : public LocMsg {
      void* mLocEng;
      const AGpsExtType mType;
      const loc_if_req_sender_id_e_type mSenderId;
      char* const mSSID;
      char* const mPassword;
      const bool mIsReq;
      LocEngReqRelWifi(void* locEng, AGpsExtType type,
                       loc_if_req_sender_id_e_type sender_id,
                       char* s, char* p, bool isReq);
      virtual ~LocEngReqRelWifi();
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngRequestXtra : public LocMsg {
      void* mLocEng;
      LocEngRequestXtra(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngRequestTime : public LocMsg {
      void* mLocEng;
      LocEngRequestTime(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngRequestNi : public LocMsg {
      void* mLocEng;
      const GpsNiNotification mNotify;
      const void *mPayload;
      LocEngRequestNi(void* locEng,
                      GpsNiNotification &notif,
                      const void* data);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngDown : public LocMsg {
      void* mLocEng;
      LocEngDown(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngUp : public LocMsg {
      void* mLocEng;
      LocEngUp(void* locEng);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  
  struct LocEngGetZpp : public LocMsg {
      LocEngAdapter* mAdapter;
      LocEngGetZpp(LocEngAdapter* adapter);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
      void send() const;
  };
  
  struct LocEngShutdown : public LocMsg {
      LocEngAdapter* mAdapter;
      LocEngShutdown(LocEngAdapter* adapter);
      virtual void proc() const;
      void locallog() const;
      virtual void log() const;
  };
  #ifdef __cplusplus
  }
  #endif /* __cplusplus */
  
  #endif /* LOC_ENG_MSG_H */
  