Merge "Partial Implementation of US1574:"
[platform/upstream/iotivity.git] / csdk / controller / core / include / core / Protocol.hpp
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef PROTOCOL_H_
22 #define PROTOCOL_H_
23
24 // ============================================================================
25 // Includes
26 // ============================================================================
27 #include <string>
28 #include <set>
29 #include <memory>
30 #include <stdint.h>
31 #include "Device.hpp"
32
33 // ============================================================================
34 // Forward declaration
35 // ============================================================================
36 namespace Intel {
37         namespace CCFL {
38                 namespace API {
39                         class Model;
40                 }
41         }
42 }
43
44 // ============================================================================
45 // Namespace
46 // ============================================================================
47 namespace Intel {
48 namespace CCFL {
49 namespace Protocols {
50
51 class Protocol
52 {
53 public:
54         typedef std::shared_ptr<Protocol> SharedPtr;
55         typedef std::weak_ptr<Protocol> WeakPtr;
56         typedef uint32_t Handle;
57
58         static const Handle INVALID_HANDLE = (Handle)0;
59 public:
60         virtual ~Protocol() {};
61
62 public:
63         virtual void setModel(const std::shared_ptr<Intel::CCFL::API::Model>& model) = 0;
64         virtual const Handle getHandle() = 0;
65         virtual void setHandle(const Handle handle) = 0;
66         virtual const std::string& getName() = 0;
67         virtual void forceDeviceDiscovery() = 0;
68 };
69
70 }
71 }
72 }
73
74 #endif /* PROTOCOL_H_ */