update tizen source
[framework/messaging/msg-service.git] / plugin / sms_plugin / include / SmsPluginConcatHandler.h
1 /*
2 *
3 * Copyright (c) 2000-2012 Samsung Electronics Co., Ltd. All Rights Reserved.
4 *
5 * This file is part of msg-service.
6 *
7 * Contact: Jaeyun Jeong <jyjeong@samsung.com>
8 *          Sangkoo Kim <sangkoo.kim@samsung.com>
9 *          Seunghwan Lee <sh.cat.lee@samsung.com>
10 *          SoonMin Jung <sm0415.jung@samsung.com>
11 *          Jae-Young Lee <jy4710.lee@samsung.com>
12 *          KeeBum Kim <keebum.kim@samsung.com>
13 *
14 * PROPRIETARY/CONFIDENTIAL
15 *
16 * This software is the confidential and proprietary information of
17 * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
18 * disclose such Confidential Information and shall use it only in
19 * accordance with the terms of the license agreement you entered
20 * into with SAMSUNG ELECTRONICS.
21 *
22 * SAMSUNG make no representations or warranties about the suitability
23 * of the software, either express or implied, including but not limited
24 * to the implied warranties of merchantability, fitness for a particular
25 * purpose, or non-infringement. SAMSUNG shall not be liable for any
26 * damages suffered by licensee as a result of using, modifying or
27 * distributing this software or its derivatives.
28 *
29 */
30
31 #ifndef SMS_PLUGIN_CONCAT_HANDLER_H
32 #define SMS_PLUGIN_CONCAT_HANDLER_H
33
34
35 /*==================================================================================================
36                                          INCLUDE FILES
37 ==================================================================================================*/
38 #include <string>
39 #include <map>
40 #include <vector>
41
42 using namespace std;
43
44 #include "SmsPluginTypes.h"
45
46
47 /*==================================================================================================
48                                          VARIABLES AND DEFINES
49 ==================================================================================================*/
50 #define MAX_CONCAT_LIST 10
51
52 struct CONCAT_DATA_S
53 {
54         int     length;
55         char data[MAX_USER_DATA_LEN+1];
56 };
57
58 typedef map<unsigned char, CONCAT_DATA_S> concatDataMap;
59
60 typedef struct _SMS_CONCAT_MSG_S
61 {
62         unsigned short          msgRef;
63         unsigned char           totalSeg;
64         unsigned char           seqNum;
65
66         SMS_TIMESTAMP_S timeStamp;
67         SMS_ADDRESS_S   originAddress;
68         SMS_DCS_S               dcs;
69         bool                            bRead;
70 } SMS_CONCAT_MSG_S;
71
72 typedef struct _SMS_CONCAT_INFO_S
73 {
74         unsigned short          msgRef;
75         unsigned char           totalSeg;
76         unsigned char           segCnt;
77
78         SMS_TIMESTAMP_S timeStamp;
79         SMS_ADDRESS_S   originAddress;
80         SMS_DCS_S               dcs;
81         bool                            bRead;
82
83         unsigned int            totalSize;
84         concatDataMap   data;
85 } SMS_CONCAT_INFO_S;
86
87 typedef struct _SMS_SIM_ID_S
88 {
89         unsigned short          msgRef;
90         MSG_SIM_ID_T            simId;
91 } SMS_SIM_ID_S;
92
93
94 /*==================================================================================================
95                                      CLASS DEFINITIONS
96 ==================================================================================================*/
97 class SmsPluginConcatHandler
98 {
99 public:
100         static SmsPluginConcatHandler* instance();
101
102         bool IsConcatMsg(SMS_USERDATA_S *pUserData);
103         void handleConcatMsg(SMS_TPDU_S *pTpdu);
104
105 private:
106         SmsPluginConcatHandler();
107         virtual ~SmsPluginConcatHandler();
108
109         static SmsPluginConcatHandler* pInstance;
110
111         unsigned char checkConcatMsg(SMS_CONCAT_MSG_S *pConcatMsg, SMS_USERDATA_S *pUserData);
112         int makeConcatUserData(unsigned short MsgRef, char **ppTotalData);
113
114         void convertConcatToMsginfo(const SMS_DELIVER_S *pTpdu, const char *pUserData, int DataSize, MSG_MESSAGE_INFO_S *pMsgInfo);
115
116         void removeFromConcatList(unsigned short MsgRef);
117
118
119         vector<SMS_CONCAT_INFO_S> concatList;
120 };
121
122 #endif //SMS_PLUGIN_CONCAT_HANDLER_H