Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Friends | List of all members
YDataLogger Class Reference

#include <yocto_api.h>

Inheritance diagram for YDataLogger:
Inheritance graph
[legend]

Public Member Functions

virtual int _invokeValueCallback (string value)
 
Y_AUTOSTART_enum autoStart (void)
 
Y_BEACONDRIVEN_enum beaconDriven (void)
 
Y_CLEARHISTORY_enum clearHistory (void)
 
int currentRunIndex (void)
 
int dataStreams (vector< YDataStream * > &v)
 
virtual int forgetAllDataStreams (void)
 
Y_AUTOSTART_enum get_autoStart (void)
 
Y_BEACONDRIVEN_enum get_beaconDriven (void)
 
Y_CLEARHISTORY_enum get_clearHistory (void)
 
int get_currentRunIndex (void)
 
virtual vector< YDataSetget_dataSets (void)
 
int get_dataStreams (vector< YDataStream * > &v)
 
Y_RECORDING_enum get_recording (void)
 
s64 get_timeUTC (void)
 
YDataLoggernext (void)
 
YDataLoggernextDataLogger (void)
 
virtual vector< YDataSetparse_dataSets (string json)
 
Y_RECORDING_enum recording (void)
 
virtual int registerValueCallback (YDataLoggerValueCallback callback)
 
int set_autoStart (Y_AUTOSTART_enum newval)
 
int set_beaconDriven (Y_BEACONDRIVEN_enum newval)
 
int set_clearHistory (Y_CLEARHISTORY_enum newval)
 
int set_recording (Y_RECORDING_enum newval)
 
int set_timeUTC (s64 newval)
 
int setAutoStart (Y_AUTOSTART_enum newval)
 
int setBeaconDriven (Y_BEACONDRIVEN_enum newval)
 
int setClearHistory (Y_CLEARHISTORY_enum newval)
 
int setRecording (Y_RECORDING_enum newval)
 
int setTimeUTC (s64 newval)
 
s64 timeUTC (void)
 
 ~YDataLogger ()
 
- Public Member Functions inherited from YFunction
void _clearDataStreamCache ()
 
string _decode_json_string (const string &json)
 
string _download (const string &url)
 
YDataStream_findDataStream (YDataSet &dataset, const string &def)
 
string _get_json_path (const string &json, const string &path)
 
vector< string > _json_get_array (const string &json)
 
string _json_get_key (const string &json, const string &data)
 
string _json_get_string (const string &json)
 
int _parseEx (yJsonStateMachine &j)
 
virtual int _parserHelper (void)
 
string _parseString (yJsonStateMachine &j)
 
string _request (const string &request)
 
string _requestEx (int tcpchan, const string &request, yapiRequestProgressCallback callback, void *context)
 
void _throw (YRETCODE errType, string errMsg)
 
YRETCODE _upload (const string &path, const string &content)
 
YRETCODE _uploadWithProgress (const string &path, const string &content, yapiRequestProgressCallback callback, void *context)
 
string advertisedValue (void)
 
void clearCache ()
 
string describe (void)
 
string errMessage (void)
 
string errorMessage (void)
 
YRETCODE errorType (void)
 
YRETCODE errType (void)
 
YFUN_DESCR functionDescriptor (void)
 
string get_advertisedValue (void)
 
string get_errorMessage (void)
 
YRETCODE get_errorType (void)
 
virtual string get_friendlyName (void)
 
YFUN_DESCR get_functionDescriptor (void)
 
string get_functionId (void)
 
string get_hardwareId (void)
 
string get_hubSerial ()
 
string get_logicalName (void)
 
YModuleget_module (void)
 
void * get_userData (void)
 
bool isOnline (void)
 
YRETCODE load (int msValidity)
 
virtual string loadAttribute (string attrName)
 
string logicalName (void)
 
YModulemodule (void)
 
virtual int muteValueCallbacks (void)
 
YFunctionnext (void)
 
YFunctionnextFunction (void)
 
virtual int registerValueCallback (YFunctionValueCallback callback)
 
int set_advertisedValue (const string &newval)
 
int set_logicalName (const string &newval)
 
void set_userData (void *data)
 
int setAdvertisedValue (const string &newval)
 
int setLogicalName (const string &newval)
 
void setUserData (void *data)
 
virtual int unmuteValueCallbacks (void)
 
void * userData (void)
 
virtual ~YFunction ()
 

Static Public Member Functions

static YDataLoggerFind (string func)
 
static YDataLoggerFindDataLogger (string func)
 
static YDataLoggerFirst (void)
 
static YDataLoggerFirstDataLogger (void)
 
- Static Public Member Functions inherited from YFunction
static void _ClearCache (void)
 
static YFunctionFind (string func)
 
static YFunctionFindFunction (string func)
 
static YFunctionFirst (void)
 
static YFunctionFirstFunction (void)
 

Static Public Attributes

static const Y_AUTOSTART_enum AUTOSTART_INVALID = Y_AUTOSTART_INVALID
 
static const Y_AUTOSTART_enum AUTOSTART_OFF = Y_AUTOSTART_OFF
 
static const Y_AUTOSTART_enum AUTOSTART_ON = Y_AUTOSTART_ON
 
static const Y_BEACONDRIVEN_enum BEACONDRIVEN_INVALID = Y_BEACONDRIVEN_INVALID
 
static const Y_BEACONDRIVEN_enum BEACONDRIVEN_OFF = Y_BEACONDRIVEN_OFF
 
static const Y_BEACONDRIVEN_enum BEACONDRIVEN_ON = Y_BEACONDRIVEN_ON
 
static const Y_CLEARHISTORY_enum CLEARHISTORY_FALSE = Y_CLEARHISTORY_FALSE
 
static const Y_CLEARHISTORY_enum CLEARHISTORY_INVALID = Y_CLEARHISTORY_INVALID
 
static const Y_CLEARHISTORY_enum CLEARHISTORY_TRUE = Y_CLEARHISTORY_TRUE
 
static const int CURRENTRUNINDEX_INVALID = YAPI_INVALID_UINT
 
static const Y_RECORDING_enum RECORDING_INVALID = Y_RECORDING_INVALID
 
static const Y_RECORDING_enum RECORDING_OFF = Y_RECORDING_OFF
 
static const Y_RECORDING_enum RECORDING_ON = Y_RECORDING_ON
 
static const Y_RECORDING_enum RECORDING_PENDING = Y_RECORDING_PENDING
 
static const s64 TIMEUTC_INVALID = YAPI_INVALID_LONG
 
- Static Public Attributes inherited from YFunction
static const string ADVERTISEDVALUE_INVALID = YAPI_INVALID_STRING
 
static const string FRIENDLYNAME_INVALID = YAPI_INVALID_STRING
 
static const YFUN_DESCR FUNCTIONDESCRIPTOR_INVALID = Y_FUNCTIONDESCRIPTOR_INVALID
 
static const string FUNCTIONID_INVALID = YAPI_INVALID_STRING
 
static const string HARDWAREID_INVALID = YAPI_INVALID_STRING
 
static const string LOGICALNAME_INVALID = YAPI_INVALID_STRING
 

Private Member Functions

virtual int _parseAttr (YJSONObject *json_val)
 
int getData (unsigned runIdx, unsigned timeIdx, string &buffer, yJsonStateMachine &j)
 
 YDataLogger (const string &func)
 

Private Attributes

Y_AUTOSTART_enum _autoStart
 
Y_BEACONDRIVEN_enum _beaconDriven
 
Y_CLEARHISTORY_enum _clearHistory
 
int _currentRunIndex
 
Y_RECORDING_enum _recording
 
s64 _timeUTC
 
YDataLoggerValueCallback _valueCallbackDataLogger
 
string dataLoggerURL
 

Friends

YDataLoggeryFindDataLogger (const string &func)
 
YDataLoggeryFirstDataLogger (void)
 
int YOldDataStream::loadStream (void)
 

Additional Inherited Members

- Protected Member Functions inherited from YFunction
YRETCODE _buildSetRequest (const string &changeattr, const string *changeval, string &request, string &errmsg)
 
string _escapeAttr (const string &changeval)
 
YRETCODE _getDescriptor (YFUN_DESCR &fundescr, string &errMsg)
 
YRETCODE _getDevice (YDevice *&dev, string &errMsg)
 
YRETCODE _load_unsafe (int msValidity)
 
YRETCODE _nextFunction (string &hwId)
 
int _parse (YJSONObject *j)
 
YRETCODE _setAttr (string attrname, string newvalue)
 
 YFunction (const string &func)
 
- Static Protected Member Functions inherited from YFunction
static void _AddToCache (const string &classname, const string &func, YFunction *obj)
 
static YFunction_FindFromCache (const string &classname, const string &func)
 
static void _UpdateTimedReportCallbackList (YFunction *func, bool add)
 
static void _UpdateValueCallbackList (YFunction *func, bool add)
 
- Protected Attributes inherited from YFunction
string _advertisedValue
 
u64 _cacheExpiration
 
string _className
 
std::map< string, YDataStream * > _dataStreams
 
string _func
 
YFUN_DESCR _fundescr
 
string _funId
 
string _hwId
 
string _lastErrorMsg
 
YRETCODE _lastErrorType
 
string _logicalName
 
string _serial
 
yCRITICAL_SECTION _this_cs
 
void * _userData
 
YFunctionValueCallback _valueCallbackFunction
 
- Static Protected Attributes inherited from YFunction
static std::map< string, YFunction * > _cache
 

Detailed Description

YDataLogger Class: DataLogger function interface

Yoctopuce sensors include a non-volatile memory capable of storing ongoing measured data automatically, without requiring a permanent connection to a computer. The DataLogger function controls the global parameters of the internal data logger.

Definition at line 3633 of file yocto_api.h.

Constructor & Destructor Documentation

YDataLogger::YDataLogger ( const string &  func)
private

Definition at line 8677 of file yocto_api.cpp.

YDataLogger::~YDataLogger ( )

Definition at line 8691 of file yocto_api.cpp.

Member Function Documentation

int YDataLogger::_invokeValueCallback ( string  value)
virtual

Reimplemented from YFunction.

Definition at line 9098 of file yocto_api.cpp.

int YDataLogger::_parseAttr ( YJSONObject json_val)
privatevirtual

Reimplemented from YFunction.

Definition at line 8701 of file yocto_api.cpp.

Y_AUTOSTART_enum YDataLogger::autoStart ( void  )
inline

Definition at line 3788 of file yocto_api.h.

Y_BEACONDRIVEN_enum YDataLogger::beaconDriven ( void  )
inline

Definition at line 3817 of file yocto_api.h.

Y_CLEARHISTORY_enum YDataLogger::clearHistory ( void  )
inline

Definition at line 3838 of file yocto_api.h.

int YDataLogger::currentRunIndex ( void  )
inline

Definition at line 3723 of file yocto_api.h.

int YDataLogger::dataStreams ( vector< YDataStream * > &  v)
inline

Definition at line 3690 of file yocto_api.h.

static YDataLogger* YDataLogger::Find ( string  func)
inlinestatic

Definition at line 3917 of file yocto_api.h.

YDataLogger * YDataLogger::FindDataLogger ( string  func)
static

Retrieves a data logger for a given identifier. The identifier can be specified using several formats:

  • FunctionLogicalName
  • ModuleSerialNumber.FunctionIdentifier
  • ModuleSerialNumber.FunctionLogicalName
  • ModuleLogicalName.FunctionIdentifier
  • ModuleLogicalName.FunctionLogicalName

This function does not require that the data logger is online at the time it is invoked. The returned object is nevertheless valid. Use the method YDataLogger.isOnline() to test if the data logger is indeed online at a given time. In case of ambiguity when looking for a data logger by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.

If a call to this object's is_online() method returns FALSE although you are certain that the matching device is plugged, make sure that you did call registerHub() at application initialization time.

Parameters
func: a string that uniquely characterizes the data logger
Returns
a YDataLogger object allowing you to drive the data logger.

Definition at line 9047 of file yocto_api.cpp.

static YDataLogger* YDataLogger::First ( void  )
inlinestatic

Definition at line 3941 of file yocto_api.h.

YDataLogger * YDataLogger::FirstDataLogger ( void  )
static

Starts the enumeration of data loggers currently accessible. Use the method YDataLogger.nextDataLogger() to iterate on next data loggers.

Returns
a pointer to a YDataLogger object, corresponding to the first data logger currently online, or a NULL pointer if there are none.

Definition at line 9164 of file yocto_api.cpp.

int YDataLogger::forgetAllDataStreams ( void  )
virtual

Clears the data logger memory and discards all recorded data streams. This method also resets the current run index to zero.

Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 9116 of file yocto_api.cpp.

Y_AUTOSTART_enum YDataLogger::get_autoStart ( void  )

Returns the default activation state of the data logger on power up.

Returns
either Y_AUTOSTART_OFF or Y_AUTOSTART_ON, according to the default activation state of the data logger on power up

On failure, throws an exception or returns Y_AUTOSTART_INVALID.

Definition at line 8874 of file yocto_api.cpp.

Y_BEACONDRIVEN_enum YDataLogger::get_beaconDriven ( void  )

Returns true if the data logger is synchronised with the localization beacon.

Returns
either Y_BEACONDRIVEN_OFF or Y_BEACONDRIVEN_ON, according to true if the data logger is synchronised with the localization beacon

On failure, throws an exception or returns Y_BEACONDRIVEN_INVALID.

Definition at line 8932 of file yocto_api.cpp.

Y_CLEARHISTORY_enum YDataLogger::get_clearHistory ( void  )

Definition at line 8982 of file yocto_api.cpp.

int YDataLogger::get_currentRunIndex ( void  )

Returns the current run number, corresponding to the number of times the module was powered on with the dataLogger enabled at some point.

Returns
an integer corresponding to the current run number, corresponding to the number of times the module was powered on with the dataLogger enabled at some point

On failure, throws an exception or returns Y_CURRENTRUNINDEX_INVALID.

Definition at line 8734 of file yocto_api.cpp.

vector< YDataSet > YDataLogger::get_dataSets ( void  )
virtual

Returns a list of YDataSet objects that can be used to retrieve all measures stored by the data logger.

This function only works if the device uses a recent firmware, as YDataSet objects are not supported by firmwares older than version 13000.

Returns
a list of YDataSet object.

On failure, throws an exception or returns an empty list.

Definition at line 9133 of file yocto_api.cpp.

int YDataLogger::get_dataStreams ( vector< YDataStream * > &  v)

Builds a list of all data streams hold by the data logger (legacy method). The caller must pass by reference an empty array to hold YDataStream objects, and the function fills it with objects describing available data sequences.

This is the old way to retrieve data from the DataLogger. For new applications, you should rather use get_dataSets() method, or call directly get_recordedData() on the sensor object.

Parameters
v: an array of YDataStream objects to be filled in
Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 8624 of file yocto_api.cpp.

Y_RECORDING_enum YDataLogger::get_recording ( void  )

Returns the current activation state of the data logger.

Returns
a value among Y_RECORDING_OFF, Y_RECORDING_ON and Y_RECORDING_PENDING corresponding to the current activation state of the data logger

On failure, throws an exception or returns Y_RECORDING_INVALID.

Definition at line 8818 of file yocto_api.cpp.

s64 YDataLogger::get_timeUTC ( void  )

Returns the Unix timestamp for current UTC time, if known.

Returns
an integer corresponding to the Unix timestamp for current UTC time, if known

On failure, throws an exception or returns Y_TIMEUTC_INVALID.

Definition at line 8763 of file yocto_api.cpp.

int YDataLogger::getData ( unsigned  runIdx,
unsigned  timeIdx,
string &  buffer,
yJsonStateMachine j 
)
private

Definition at line 8546 of file yocto_api.cpp.

YDataLogger* YDataLogger::next ( void  )
inline

Definition at line 3928 of file yocto_api.h.

YDataLogger * YDataLogger::nextDataLogger ( void  )

Continues the enumeration of data loggers started using yFirstDataLogger().

Returns
a pointer to a YDataLogger object, corresponding to a data logger currently online, or a NULL pointer if there are no more data loggers to enumerate.

Definition at line 9154 of file yocto_api.cpp.

vector< YDataSet > YDataLogger::parse_dataSets ( string  json)
virtual

Definition at line 9138 of file yocto_api.cpp.

Y_RECORDING_enum YDataLogger::recording ( void  )
inline

Definition at line 3761 of file yocto_api.h.

int YDataLogger::registerValueCallback ( YDataLoggerValueCallback  callback)
virtual

Registers the callback function that is invoked on every change of advertised value. The callback is invoked only during the execution of ySleep or yHandleEvents. This provides control over the time when the callback is triggered. For good responsiveness, remember to call one of these two functions periodically. To unregister a callback, pass a NULL pointer as argument.

Parameters
callback: the callback function to call, or a NULL pointer. The callback function should take two arguments: the function object of which the value has changed, and the character string describing the new advertised value.

Definition at line 9079 of file yocto_api.cpp.

int YDataLogger::set_autoStart ( Y_AUTOSTART_enum  newval)

Changes the default activation state of the data logger on power up. Remember to call the saveToFlash() method of the module if the modification must be kept.

Parameters
newval: either Y_AUTOSTART_OFF or Y_AUTOSTART_ON, according to the default activation state of the data logger on power up
Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 8908 of file yocto_api.cpp.

int YDataLogger::set_beaconDriven ( Y_BEACONDRIVEN_enum  newval)

Changes the type of synchronisation of the data logger. Remember to call the saveToFlash() method of the module if the modification must be kept.

Parameters
newval: either Y_BEACONDRIVEN_OFF or Y_BEACONDRIVEN_ON, according to the type of synchronisation of the data logger
Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 8966 of file yocto_api.cpp.

int YDataLogger::set_clearHistory ( Y_CLEARHISTORY_enum  newval)

Definition at line 9004 of file yocto_api.cpp.

int YDataLogger::set_recording ( Y_RECORDING_enum  newval)

Changes the activation state of the data logger to start/stop recording data.

Parameters
newval: a value among Y_RECORDING_OFF, Y_RECORDING_ON and Y_RECORDING_PENDING corresponding to the activation state of the data logger to start/stop recording data
Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 8850 of file yocto_api.cpp.

int YDataLogger::set_timeUTC ( s64  newval)

Changes the current UTC time reference used for recorded data.

Parameters
newval: an integer corresponding to the current UTC time reference used for recorded data
Returns
YAPI_SUCCESS if the call succeeds.

On failure, throws an exception or returns a negative error code.

Definition at line 8794 of file yocto_api.cpp.

int YDataLogger::setAutoStart ( Y_AUTOSTART_enum  newval)
inline

Definition at line 3804 of file yocto_api.h.

int YDataLogger::setBeaconDriven ( Y_BEACONDRIVEN_enum  newval)
inline

Definition at line 3833 of file yocto_api.h.

int YDataLogger::setClearHistory ( Y_CLEARHISTORY_enum  newval)
inline

Definition at line 3842 of file yocto_api.h.

int YDataLogger::setRecording ( Y_RECORDING_enum  newval)
inline

Definition at line 3775 of file yocto_api.h.

int YDataLogger::setTimeUTC ( s64  newval)
inline

Definition at line 3748 of file yocto_api.h.

s64 YDataLogger::timeUTC ( void  )
inline

Definition at line 3735 of file yocto_api.h.

Friends And Related Function Documentation

YDataLogger* yFindDataLogger ( const string &  func)
friend

Retrieves a data logger for a given identifier. The identifier can be specified using several formats:

  • FunctionLogicalName
  • ModuleSerialNumber.FunctionIdentifier
  • ModuleSerialNumber.FunctionLogicalName
  • ModuleLogicalName.FunctionIdentifier
  • ModuleLogicalName.FunctionLogicalName

This function does not require that the data logger is online at the time it is invoked. The returned object is nevertheless valid. Use the method YDataLogger.isOnline() to test if the data logger is indeed online at a given time. In case of ambiguity when looking for a data logger by logical name, no error is notified: the first instance found is returned. The search is performed first by hardware name, then by logical name.

If a call to this object's is_online() method returns FALSE although you are certain that the matching device is plugged, make sure that you did call registerHub() at application initialization time.

Parameters
func: a string that uniquely characterizes the data logger
Returns
a YDataLogger object allowing you to drive the data logger.

Definition at line 3979 of file yocto_api.h.

YDataLogger* yFirstDataLogger ( void  )
friend

Starts the enumeration of data loggers currently accessible. Use the method YDataLogger.nextDataLogger() to iterate on next data loggers.

Returns
a pointer to a YDataLogger object, corresponding to the first data logger currently online, or a NULL pointer if there are none.

Definition at line 3990 of file yocto_api.h.

int YOldDataStream::loadStream ( void  )
friend

Member Data Documentation

Y_AUTOSTART_enum YDataLogger::_autoStart
private

Definition at line 3643 of file yocto_api.h.

Y_BEACONDRIVEN_enum YDataLogger::_beaconDriven
private

Definition at line 3644 of file yocto_api.h.

Y_CLEARHISTORY_enum YDataLogger::_clearHistory
private

Definition at line 3645 of file yocto_api.h.

int YDataLogger::_currentRunIndex
private

Definition at line 3640 of file yocto_api.h.

Y_RECORDING_enum YDataLogger::_recording
private

Definition at line 3642 of file yocto_api.h.

s64 YDataLogger::_timeUTC
private

Definition at line 3641 of file yocto_api.h.

YDataLoggerValueCallback YDataLogger::_valueCallbackDataLogger
private

Definition at line 3646 of file yocto_api.h.

const Y_AUTOSTART_enum YDataLogger::AUTOSTART_INVALID = Y_AUTOSTART_INVALID
static

Definition at line 3704 of file yocto_api.h.

const Y_AUTOSTART_enum YDataLogger::AUTOSTART_OFF = Y_AUTOSTART_OFF
static

Definition at line 3702 of file yocto_api.h.

const Y_AUTOSTART_enum YDataLogger::AUTOSTART_ON = Y_AUTOSTART_ON
static

Definition at line 3703 of file yocto_api.h.

const Y_BEACONDRIVEN_enum YDataLogger::BEACONDRIVEN_INVALID = Y_BEACONDRIVEN_INVALID
static

Definition at line 3707 of file yocto_api.h.

const Y_BEACONDRIVEN_enum YDataLogger::BEACONDRIVEN_OFF = Y_BEACONDRIVEN_OFF
static

Definition at line 3705 of file yocto_api.h.

const Y_BEACONDRIVEN_enum YDataLogger::BEACONDRIVEN_ON = Y_BEACONDRIVEN_ON
static

Definition at line 3706 of file yocto_api.h.

const Y_CLEARHISTORY_enum YDataLogger::CLEARHISTORY_FALSE = Y_CLEARHISTORY_FALSE
static

Definition at line 3708 of file yocto_api.h.

const Y_CLEARHISTORY_enum YDataLogger::CLEARHISTORY_INVALID = Y_CLEARHISTORY_INVALID
static

Definition at line 3710 of file yocto_api.h.

const Y_CLEARHISTORY_enum YDataLogger::CLEARHISTORY_TRUE = Y_CLEARHISTORY_TRUE
static

Definition at line 3709 of file yocto_api.h.

const int YDataLogger::CURRENTRUNINDEX_INVALID = YAPI_INVALID_UINT
static

Definition at line 3696 of file yocto_api.h.

string YDataLogger::dataLoggerURL
private

Definition at line 3661 of file yocto_api.h.

const Y_RECORDING_enum YDataLogger::RECORDING_INVALID = Y_RECORDING_INVALID
static

Definition at line 3701 of file yocto_api.h.

const Y_RECORDING_enum YDataLogger::RECORDING_OFF = Y_RECORDING_OFF
static

Definition at line 3698 of file yocto_api.h.

const Y_RECORDING_enum YDataLogger::RECORDING_ON = Y_RECORDING_ON
static

Definition at line 3699 of file yocto_api.h.

const Y_RECORDING_enum YDataLogger::RECORDING_PENDING = Y_RECORDING_PENDING
static

Definition at line 3700 of file yocto_api.h.

const s64 YDataLogger::TIMEUTC_INVALID = YAPI_INVALID_LONG
static

Definition at line 3697 of file yocto_api.h.


The documentation for this class was generated from the following files:


yoctopuce_altimeter
Author(s): Anja Sheppard
autogenerated on Mon Jun 10 2019 15:49:13