An extension of original API for working with GPS devices.
Diff: GPSGeofence.h
- Revision:
- 8:47fa213225c3
- Child:
- 9:708266cd594b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPSGeofence.h Tue Jun 13 15:19:49 2017 +0000 @@ -0,0 +1,85 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2014 ARM Limited + * + * 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 __GPS_GEOFENCE_H__ +#define __GPS_GEOFENCE_H__ + +class GPSProvider; + +class GPSGeofence { +public: + enum { + GEOFENCE_TRANSITION_DWELL = 1, + GEOFENCE_TRANSITION_ENTER = 2, + GEOFENCE_TRANSITION_EXIT = 4, + }; + + static const int NEVER_EXPIRE = -1; + + static const int GEOFENCE_ID_MAX_SIZE = 32; + + /** + * Construct a GPSGeofence instance. + */ + GPSGeofence() : + _expirationDuration(-1), + _notificationResponsiveness(0), + _transitionTypes(0) { + + memset(_geofenceId, 0, GEOFENCE_ID_MAX_SIZE); + } + + virtual void setGeofenceRegion(GPSProvider::LocationType_t lat, + GPSProvider::LocationType_t lon, + GPSProvider::LocationType_t radius) { + _lat = lat; + _lon = lon; + _radius = radius; + } + + virtual void setExpirationDuration (long durationMillis) = 0; + + virtual void setNotificationResponsiveness (int notificationResponsivenessMs) { + _notificationResponsiveness = notificationResponsivenessMs; + } + + virtual void setGeofenceId(const char *geofenceId) { + if(strlen(geofenceId) > GEOFENCE_ID_MAX_SIZE) { + return; + } + memcpy(_geofenceId, geofenceId, strlen(geofenceId)); + } + + virtual void setTransitionTypes(int transitionTypes) { + _transitionTypes = transitionTypes; + } + +protected: + char _geofenceId[GEOFENCE_ID_MAX_SIZE]; + GPSProvider::LocationType_t _lat; + GPSProvider::LocationType_t _lon; + GPSProvider::LocationType_t _radius; + long _expirationDuration; + int _notificationResponsiveness; + int _transitionTypes; + +private: + /* disallow copy constructor and assignment operators */ + GPSGeofence(const GPSGeofence&); + GPSGeofence & operator= (const GPSGeofence&); +}; + +#endif /* __GPS_GEOFENCE_H__ */