mbed.org implementation of the abstract SmartREST library for the Cumulocity Platform SmartREST protocol.

Dependents:   MbedSmartRestMain MbedSmartRestMain

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SmartRest.h Source File

SmartRest.h

Go to the documentation of this file.
00001 /*
00002  * SmartRest.h
00003  *
00004  * Created on: Nov 1, 2013
00005  * * Authors: Vincent Wochnik <v.wochnik@gmail.com>
00006  *
00007  * Copyright (c) 2013 Cumulocity GmbH
00008  *
00009  * Permission is hereby granted, free of charge, to any person obtaining
00010  * a copy of this software and associated documentation files (the
00011  * "Software"), to deal in the Software without restriction, including
00012  * without limitation the rights to use, copy, modify, merge, publish,
00013  * distribute, sublicense, and/or sell copies of the Software, and to
00014  * permit persons to whom the Software is furnished to do so, subject to
00015  * the following conditions:
00016  *
00017  * The above copyright notice and this permission notice shall be
00018  * included in all copies or substantial portions of the Software.
00019  *
00020  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00021  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00022  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00023  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
00024  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00025  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00026  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00027  */
00028 
00029 /**
00030  * @file SmartRest.h
00031  * The main SmartRest facade class. This class is abstract, because the
00032  * actual implementation has to supply a client.
00033  */
00034 
00035 #ifndef SMARTREST_H
00036 #define SMARTREST_H
00037 
00038 #include "config.h"
00039 #include <stddef.h>
00040 #include <stdint.h>
00041 #include "AbstractSmartRest.h"
00042 #include "AbstractClient.h"
00043 #include "Parser.h"
00044 
00045 /**
00046  * The main SmartRest client implementation.
00047  */
00048 class SmartRest : public AbstractSmartRest
00049 {
00050     public:
00051         /**
00052          * Creates a new generic SmartRest object.
00053          * @param client the abstract client to use
00054          * @param identifier the device identifier
00055          */
00056         SmartRest(AbstractClient&, const char*);
00057 
00058         uint8_t setAuthorization(const char*, const char*);
00059 #ifdef SMARTREST_TRANSACTIONAL
00060         uint8_t request(const DataGenerator&, const char* = NULL);
00061         uint8_t request(const DataGenerator&, Aggregator&, const char* = NULL);
00062 #endif
00063         uint8_t bootstrap(const DataGenerator&);
00064         uint8_t send(const DataGenerator&, const char* = NULL);
00065         uint8_t stream(const char*, const Record&, const char* = NULL);
00066         uint8_t receive(ParsedRecord&);
00067         void stop();
00068         const char * getIdentifier();
00069 
00070     protected:
00071         uint8_t beginRequest(const char*, const char*);
00072         uint8_t awaitResponse();
00073         bool setMoGid(ParsedRecord&);
00074 
00075     private:
00076         AbstractClient& _client;
00077         AbstractDataSource *_source;
00078         Parser _parser;
00079         const char *_identifier;
00080         char _mogid[8 * sizeof(long) + 1];
00081 };
00082 
00083 #endif