1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef __DMTSESSIONPROP_H__
18#define __DMTSESSIONPROP_H__
19
20#ifndef __cplusplus
21#error "This is a C++ header file; it requires C++ to compile."
22#endif
23
24/**
25 \file dmtSessionProp.hpp
26 \brief Contains DMFirmAlertVector and  DmtSessionProp classes  definition.\n
27       The dmtSessionProp.hpp header file contains DMFirmAlertVector and  DmtSessionProp\n
28       classes  definition. \n
29       <b>Warning:</b>  All functions, structures, and classes from this header file are for internal usage only!!!\n
30
31       The <b>DMFirmAlertVector</b> is a helper class; due to gcc limitations, declaring separate \n
32       class instead of typedef  produces smaller binary.\n
33       The <b>DmtSessionProp</b> is a structure with parameters for server session
34*/
35
36#include "jem_defs.hpp"
37#include "dmtDefs.h"
38#include "dmtFirmAlert.hpp"
39#include "dmvector.h"
40
41/**
42* Helper class; due to gcc limitations, declaring separate class instead of typedef
43* produces smaller binary
44* \warning This class is using <b>ONLY</b> for firmware update session!
45* \par Category: General
46* \par Persistence: Transient
47* \par Security: Non-Secure
48* \par Migration State: FINAL
49*/
50class DMFirmAlertVector : public DMVector<DmtFirmAlert>
51{
52};
53
54
55/**
56* This class is a structure with parameters for the server session
57* \par Category: General
58* \par Persistence: Transient
59* \par Security: Non-Secure
60* \par Migration State: FINAL
61*/
62class DmtSessionProp
63{
64private:
65  UINT16 m_nSessionID;            // session ID
66  SYNCML_DM_SESSION_DIRECTION_T m_nDirection; // session direction
67  BOOLEAN m_bWBXML;
68
69  DMFirmAlertVector m_aFirmAlerts; // result of firmware update
70
71
72public:
73 /**
74  * Default constructor - no memory allocation performed.
75  */
76
77  DmtSessionProp()
78  {
79    m_nSessionID = 0;
80    m_nDirection = SYNCML_DM_CLIENT_INITIATED_SESSION;
81    m_bWBXML = true;
82  }
83
84  /**
85  * Constructs (copy) a DMT Session Property object. The memory for this object  will be allocated.
86  * \param oCopyFrom [in] - session property that should be copied
87  */
88  DmtSessionProp( const DmtSessionProp& oCopyFrom )
89  {
90     m_nSessionID = oCopyFrom.m_nSessionID;
91     m_nDirection = oCopyFrom.m_nDirection;
92     m_bWBXML = oCopyFrom.m_bWBXML;
93     if ( oCopyFrom.m_aFirmAlerts.size() )
94        m_aFirmAlerts =  oCopyFrom.m_aFirmAlerts;
95  }
96
97  /**
98  * Constructs required fields for server initiated session. The memory for these fields  will be allocated.
99  * \param sessionID [in] - provided by Syncml DM server in a notification package
100  * \param bWBXML [in] - true to use binary xml
101  */
102  DmtSessionProp(UINT16 sessionID, BOOLEAN bWBXML)
103  {
104     m_nSessionID = sessionID;
105     m_nDirection = SYNCML_DM_SERVER_INITIATED_SESSION;
106     m_bWBXML = bWBXML;
107  }
108
109  /**
110  * Constructs session property - no memory allocation performed.
111  * \param bWBXML [in] -true to use binary xml
112  */
113  DmtSessionProp(BOOLEAN bWBXML)
114  {
115     m_nSessionID = 0;
116     m_nDirection = SYNCML_DM_CLIENT_INITIATED_SESSION;
117     m_bWBXML = bWBXML;
118  }
119
120
121  /**
122  * Constructs session property for firmware.
123  * \param aFirmAlert [in] - firm alert to send to the Syncml DM server
124  * \param bWBXML [in] - true to use binary xml
125  */
126  DmtSessionProp(const DmtFirmAlert & aFirmAlert, BOOLEAN bWBXML)
127  {
128     m_nSessionID = 0;
129     m_nDirection = SYNCML_DM_CLIENT_INITIATED_SESSION;
130     m_bWBXML = bWBXML;
131     m_aFirmAlerts.push_back(aFirmAlert);
132  }
133
134 /**
135  * Retrieves session ID
136  * \par Sync (or) Async:
137  * This is a Synchronous function.
138  * \par Secure (or) Non-Secure (or) N/A:
139  * This is a Non-Secure function.
140  * \returns session ID as an unsigned short.
141  * \par Prospective Clients:
142  * All potential applications that require configuration settings.
143  */
144 UINT16 getSessionID() const
145 {
146    return m_nSessionID;
147 }
148
149 /**
150  * Retrieves direction
151  * \par Sync (or) Async:
152  * This is a Synchronous function.
153  * \par Secure (or) Non-Secure (or) N/A:
154  * This is a Non-Secure function.
155  * \returns session direction as an  unsigned short.
156  * \par Prospective Clients:
157  * All potential applications that require configuration settings.
158  */
159 SYNCML_DM_SESSION_DIRECTION_T getDirection() const
160 {
161    return m_nDirection;
162 }
163
164 /**
165  * Sets session ID
166  * \par Sync (or) Async:
167  * This is a Synchronous function.
168  * \par Secure (or) Non-Secure (or) N/A:
169  * This is a Non-Secure function.
170  * \param sessionID [in] - session ID as an unsigned short.
171  * \par Prospective Clients:
172  * All potential applications that require configuration settings.
173  */
174 void setSessionID(UINT16 sessionID)
175 {
176    m_nSessionID = sessionID;
177    m_nDirection = SYNCML_DM_SERVER_INITIATED_SESSION;
178 }
179
180 /**
181  * Sets session direction
182  * \par Sync (or) Async:
183  * This is a Synchronous function.
184  * \par Secure (or) Non-Secure (or) N/A:
185  * This is a Non-Secure function.
186  * \param direction [in] - session direction as an unsigned short.
187  * \par Prospective Clients:
188  * All potential applications that require configuration settings.
189  */
190 void setDirection(SYNCML_DM_SESSION_DIRECTION_T direction)
191 {
192    m_nDirection = direction;
193 }
194
195/**
196  * Generates session ID
197  * \par Sync (or) Async:
198  * This is a Synchronous function.
199  * \par Secure (or) Non-Secure (or) N/A:
200  * This is a Non-Secure function.
201  * \par Prospective Clients:
202  * All potential applications that require configuration settings.
203  */
204 void generateSessionID();
205
206  /**
207  * Sets session binary XML flag
208  * \par Sync (or) Async:
209  * This is a Synchronous function.
210  * \par Secure (or) Non-Secure (or) N/A:
211  * This is a Non-Secure function.
212  * \param bWBXML [in] - true to use binary xml
213  * \par Prospective Clients:
214  * All potential applications that require configuration settings.
215  */
216
217 void setWBXML(BOOLEAN bWBXML)
218 {
219    m_bWBXML = bWBXML;
220 }
221
222 /**
223  * Retrieves binary XML flag
224  * \par Sync (or) Async:
225  * This is a Synchronous function.
226  * \par Secure (or) Non-Secure (or) N/A:
227  * This is a Non-Secure function.
228  * \returns binary XML flag as a boolean.
229  * \par Prospective Clients:
230  * All potential applications that require configuration settings.
231  */
232 BOOLEAN isWBXML() const
233 {
234    return m_bWBXML;
235 }
236
237
238 /**
239  * Retrieves firmware alert
240  * \par Sync (or) Async:
241  * This is a Synchronous function.
242  * \par Secure (or) Non-Secure (or) N/A:
243  * This is a Non-Secure function.
244  * \param aFirmAlert [out] - firmware update result code in DMFirmAlertVector.
245  * \par Prospective Clients:
246  * All potential applications that require configuration settings.
247  */
248 void getFirmAlerts(DMFirmAlertVector & aFirmAlert)
249 {
250    aFirmAlert = m_aFirmAlerts;
251 }
252
253
254 /**
255  * Adds firmware update result
256  * \par Sync (or) Async:
257  * This is a Synchronous function.
258  * \par Secure (or) Non-Secure (or) N/A:
259  * This is a Non-Secure function.
260  * \param aFirmAlert [in] - reference to a DmtFirmAlert object
261  * \return index
262  * \par Prospective Clients:
263  * All potential applications that require configuration settings.
264  */
265 INT32 addFirmAlert(const DmtFirmAlert & aFirmAlert)
266 {
267   m_aFirmAlerts.push_back(aFirmAlert);
268   return m_aFirmAlerts.size();
269 }
270
271};
272
273#endif
274