4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JuHak Park <juhaki.park@samsung.com>,
7 * JuneHyuk Lee <junhyuk7.lee@samsung.com>,
8 * SunBong Ha <sunbong.ha@samsung.com>
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
14 * http://www.apache.org/licenses/LICENSE-2.0
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
28 * For any sort of issue you concern as to this software,
29 * you may use following point of contact.
30 * All resources contributed on this software
31 * are orinigally written by S-Core Inc., a member of Samsung Group.
33 * SeongWon Shim <seongwon.shim@samsung.com>
37 * @oma_ds_protocol_binder.c
39 * @brief This file is the source file of implementation of callback function for Protocol Binder
43 #include <assert.h> /* TODO : replace this line to fw_assert.h */
45 #include "agent-framework/Utility/fw_log.h"
46 #include "agent-framework/NetworkAssistant/protocol_binder/protocol_binder_util.h"
47 #include "ServiceAdapter/ProtocolBinder/oma_ds_protocol_binder.h"
48 #include "ServiceAdapter/SA_Elements_Internal.h"
49 #include "ServiceAdapter/SA_Command_Internal.h"
50 #include "ServiceAdapter/SA_DevInf_Internal.h"
51 #include "ServiceAdapter/SA_Command.h"
52 #include "ServiceAdapter/SA_Elements.h"
53 #include "ServiceAdapter/SA_DevInf.h"
54 #include "ServiceAdapter/SA_Define.h"
56 #define LOG_TAG "OMA_DS_BINDER"
58 static PROTOCOL_BINDER_ERROR __append_location_to_wbxml_node(Location *pLocation,
59 protocol_binder *pBinder, WBXMLTreeNode *parent_node);
61 static PROTOCOL_BINDER_ERROR __append_anchor_to_wbxml_node(Anchor *pAnchor,
62 protocol_binder *pBinder, WBXMLTreeNode *parent_node);
64 static PROTOCOL_BINDER_ERROR __append_devinf_contenttype_to_wbxml_node(DevInfContentType *pDevInfContentType,
65 protocol_binder *pBinder, WBXMLTreeNode *parent_node, char *node);
67 static PROTOCOL_BINDER_ERROR __append_cred_to_wbxml_node(Cred *pCred, protocol_binder *pBinder, WBXMLTreeNode *parent_node) ;
69 static PROTOCOL_BINDER_ERROR __oma_ds_binder_devinf_converter_function(protocol_binder *pBinder,
70 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
71 static PROTOCOL_BINDER_ERROR __oma_ds_binder_syncml_start_converter_function(protocol_binder *pBinder,
72 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
73 static PROTOCOL_BINDER_ERROR __oma_ds_binder_header_converter_function(protocol_binder *pBinder,
74 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
75 static PROTOCOL_BINDER_ERROR __oma_ds_binder_final_converter_function(protocol_binder *pBinder,
76 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
77 static PROTOCOL_BINDER_ERROR __oma_ds_binder_body_start_converter_function(protocol_binder *pBinder,
78 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
79 static PROTOCOL_BINDER_ERROR __oma_ds_binder_status_converter_function(protocol_binder *pBinder,
80 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
81 static PROTOCOL_BINDER_ERROR __oma_ds_binder_alert_command_converter_function(protocol_binder *pBinder,
82 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
83 static PROTOCOL_BINDER_ERROR __oma_ds_binder_results_command_converter_function(protocol_binder *pBinder,
84 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
85 static PROTOCOL_BINDER_ERROR __oma_ds_binder_put_command_converter_function(protocol_binder *pBinder,
86 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
87 static PROTOCOL_BINDER_ERROR __oma_ds_binder_get_command_converter_function(protocol_binder *pBinder,
88 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
89 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_start_command_converter_function(protocol_binder *pBinder,
90 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
91 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_end_command_converter_function(protocol_binder *pBinder,
92 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
93 static PROTOCOL_BINDER_ERROR __oma_ds_binder_add_command_converter_function(protocol_binder *pBinder,
94 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
95 static PROTOCOL_BINDER_ERROR __oma_ds_binder_replace_command_converter_function(protocol_binder *pBinder,
96 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
97 static PROTOCOL_BINDER_ERROR __oma_ds_binder_delete_command_converter_function(protocol_binder *pBinder,
98 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
99 static PROTOCOL_BINDER_ERROR __oma_ds_binder_map_command_converter_function(protocol_binder *pBinder,
100 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node);
102 static ProtocolVersion __get_oma_ds_protocol_version(char *verdtd);
103 static DevInfVersion __get_oma_ds_devInf_version(char *verdtd);
104 static DevInfDevTyp __get_oma_ds_devInf_device_type(char *devType);
105 static DevInfContentType *__get_devinf_contenttype(WBXMLTreeNode *node);
106 static Location *_get_location(WBXMLTreeNode *node);
107 static Anchor *_get_anchor(WBXMLTreeNode *node);
108 static Cred *__get_cred(WBXMLTreeNode *node);
109 static Chal *_get_chal(WBXMLTreeNode *node);
111 static PROTOCOL_BINDER_ERROR __oma_ds_binder_devinf_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
112 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
113 static PROTOCOL_BINDER_ERROR __oma_ds_binder_header_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
114 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
115 static PROTOCOL_BINDER_ERROR __oma_ds_binder_results_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
116 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
117 static PROTOCOL_BINDER_ERROR __oma_ds_binder_put_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
118 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
119 static PROTOCOL_BINDER_ERROR __oma_ds_binder_get_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
120 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
121 static PROTOCOL_BINDER_ERROR __oma_ds_binder_alert_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
122 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
123 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_end_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
124 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
125 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_start_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
126 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
127 static PROTOCOL_BINDER_ERROR __oma_ds_binder_add_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
128 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
129 static PROTOCOL_BINDER_ERROR __oma_ds_binder_replace_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
130 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
131 static PROTOCOL_BINDER_ERROR __oma_ds_binder_delete_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
132 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
133 static PROTOCOL_BINDER_ERROR __oma_ds_binder_final_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
134 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
135 static PROTOCOL_BINDER_ERROR __oma_ds_binder_status_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
136 WBXMLTreeNode *wbxml_dom_node, Content_Ptr *pContent);
165 const Binder_function_info oma_ds_binder_function_info[] = {
166 { PE_SYNCML_START, "SyncML", __oma_ds_binder_syncml_start_converter_function, NULL, false},
167 { PE_SYNCML_END, "/SyncML", NULL, NULL, false},
168 { PE_HEADER, "SyncHdr", __oma_ds_binder_header_converter_function, __oma_ds_binder_header_reverse_converter_function, true},
169 { PE_BODY_START, "SyncBody", __oma_ds_binder_body_start_converter_function, NULL, false},
170 { PE_BODY_END, "/SyncBody", NULL, NULL, false},
171 { PE_FINAL, "Final", __oma_ds_binder_final_converter_function, __oma_ds_binder_final_reverse_converter_function, true},
172 { PE_ALERT, "Alert", __oma_ds_binder_alert_command_converter_function, __oma_ds_binder_alert_command_reverse_converter_function, true},
173 { PE_STATUS, "Status", __oma_ds_binder_status_converter_function, __oma_ds_binder_status_reverse_converter_function, true},
174 { PE_RESULTS_START, "Results", __oma_ds_binder_results_command_converter_function, __oma_ds_binder_results_command_reverse_converter_function, false},
175 { PE_RESULTS_END, "/Results", NULL, NULL, false},
176 { PE_PUT_START, "Put", __oma_ds_binder_put_command_converter_function, __oma_ds_binder_put_command_reverse_converter_function, false},
177 { PE_PUT_END, "/Put", NULL, NULL, false},
178 { PE_GET, "Get", __oma_ds_binder_get_command_converter_function, __oma_ds_binder_get_command_reverse_converter_function, true},
179 { PE_SYNC_START, "Sync", __oma_ds_binder_sync_start_command_converter_function, __oma_ds_binder_sync_start_command_reverse_converter_function, false},
180 { PE_SYNC_END, "/Sync", __oma_ds_binder_sync_end_command_converter_function, __oma_ds_binder_sync_end_command_reverse_converter_function, false},
181 { PE_ADD, "Add", __oma_ds_binder_add_command_converter_function, __oma_ds_binder_add_command_reverse_converter_function, true},
182 { PE_REPLACE, "Replace", __oma_ds_binder_replace_command_converter_function, __oma_ds_binder_replace_command_reverse_converter_function, true},
183 { PE_DELETE, "Delete", __oma_ds_binder_delete_command_converter_function, __oma_ds_binder_delete_command_reverse_converter_function, true},
184 { PE_MAP, "Map", __oma_ds_binder_map_command_converter_function, NULL, true},
185 { PE_DEVINF, "DevInf", __oma_ds_binder_devinf_converter_function, __oma_ds_binder_devinf_reverse_converter_function, true}
190 static PROTOCOL_BINDER_ERROR __append_location_to_wbxml_node(Location *pLocation,
191 protocol_binder *pBinder,
192 WBXMLTreeNode *parent_node)
195 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
197 if (pLocation->locURI != NULL) {
198 WBXMLTreeNode *LocURI = add_child_wbxml_node_using_xml_name_with_text(pBinder,
199 parent_node, ELEMENT_LOCURI, pLocation->locURI, strlen(pLocation->locURI));
200 if (LocURI == NULL) {
201 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
208 if (pLocation->locName != NULL) {
209 WBXMLTreeNode *locName = add_child_wbxml_node_using_xml_name_with_text(pBinder,
210 parent_node, ELEMENT_LOCNAME, pLocation->locName, strlen(pLocation->locName));
211 if (locName == NULL) {
212 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
221 FW_LOGE("error : %d", err);
225 static PROTOCOL_BINDER_ERROR __append_anchor_to_wbxml_node(Anchor *pAnchor,
226 protocol_binder *pBinder,
227 WBXMLTreeNode *parent_node)
230 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
232 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder, parent_node, ELEMENT_META);
233 if (meta_node == NULL) {
234 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
238 WBXMLTreeNode *anchor_node = add_child_wbxml_node_using_xml_name(pBinder, meta_node, ELEMENT_ANCHOR);
239 if (anchor_node == NULL) {
240 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
244 if (pAnchor->lastAnchor) {
245 WBXMLTreeNode *last_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
246 anchor_node, ELEMENT_LAST, pAnchor->lastAnchor, strlen(pAnchor->lastAnchor));
247 if (last_node == NULL) {
248 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
253 if (pAnchor->nextAnchor) {
254 WBXMLTreeNode *next_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
255 anchor_node, ELEMENT_NEXT, pAnchor->nextAnchor, strlen(pAnchor->nextAnchor));
256 if (next_node == NULL) {
257 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
266 FW_LOGE("error : %d", err);
270 static PROTOCOL_BINDER_ERROR __append_devinf_contenttype_to_wbxml_node(DevInfContentType *pDevInfContentType,
271 protocol_binder *pBinder,
272 WBXMLTreeNode *parent_node,
276 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
277 WBXMLTreeNode *xnode = add_child_wbxml_node_using_xml_name(pBinder, parent_node, node);
279 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
283 WBXMLTreeNode *cttype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
284 xnode, "CTType", pDevInfContentType->cttype, strlen(pDevInfContentType->cttype));
285 if (cttype_node == NULL) {
286 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
290 WBXMLTreeNode *verct_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
291 xnode, "VerCT", pDevInfContentType->verct, strlen(pDevInfContentType->verct));
292 if (verct_node == NULL) {
293 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
301 FW_LOGE("error : %d", err);
305 static PROTOCOL_BINDER_ERROR __append_cred_to_wbxml_node(Cred *pCred,
306 protocol_binder *pBinder,
307 WBXMLTreeNode *parent_node)
310 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
313 WBXMLTreeNode *cred_node = add_child_wbxml_node_using_xml_name(pBinder, parent_node, ELEMENT_CRED);
314 if (cred_node == NULL) {
315 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
319 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder, cred_node, ELEMENT_META);
320 if (meta_node == NULL) {
321 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
326 WBXMLTreeNode *type_node = NULL;
328 switch (pCred->type) {
329 case AUTH_TYPE_BASIC:
331 if (pCred->format == FORMAT_TYPE_BASE64) {
332 WBXMLTreeNode *format_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
333 meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
334 if (format_node == NULL) {
335 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
340 type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
341 meta_node, ELEMENT_TYPE, ELEMENT_AUTH_BASIC, strlen(ELEMENT_AUTH_BASIC));
342 if (type_node == NULL) {
343 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
348 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
349 cred_node, ELEMENT_DATA, pCred->data, strlen(pCred->data));
350 if (data_node == NULL) {
351 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
358 if (pCred->format == FORMAT_TYPE_BASE64) {
359 WBXMLTreeNode *format_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
360 meta_node, ELEMENT_FORMAT, ELEMENT_FORMAT_BASE64, strlen(ELEMENT_FORMAT_BASE64));
361 if (format_node == NULL) {
362 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
367 type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
368 meta_node, ELEMENT_TYPE, ELEMENT_AUTH_MD5, strlen(ELEMENT_AUTH_MD5));
369 if (type_node == NULL) {
370 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
375 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
376 cred_node, ELEMENT_DATA, pCred->data, strlen(pCred->data));
377 if (data_node == NULL) {
378 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
391 FW_LOGE("error : %d", err);
396 static PROTOCOL_BINDER_ERROR __oma_ds_binder_devinf_converter_function(protocol_binder *pBinder,
397 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
400 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
402 Item *pItem = (Item *)pContent;
403 DevInf *pDevInf = pItem->private.devInf;
406 WBXMLTreeNode *item_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_ITEM);
407 if (item_node == NULL) {
408 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
412 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder, item_node, ELEMENT_SOURCE);
413 if (source_node == NULL) {
414 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
418 err = __append_location_to_wbxml_node(pItem->source, pBinder, source_node);
419 if (err != PROTOCOL_BINDER_OK)
422 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name(pBinder, item_node, ELEMENT_DATA);
423 if (data_node == NULL) {
424 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
428 /* devinf language setting */
429 switch_protocol(pBinder, PROTOCOL_SYNCML_DEVINF12);
430 WBXMLTree *devinf_tree = create_wbxml_tree(pBinder);
431 if (devinf_tree == NULL) {
432 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
436 add_wbxml_tree_to_wbxml_node(data_node, devinf_tree);
438 /* create root node of devinf tree*/
439 WBXMLTreeNode *devinf_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_DEVINF);
440 if (devinf_node == NULL) {
441 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
445 set_wbxml_tree_root(devinf_tree, devinf_node);
447 WBXMLTreeNode *verDTD_node = NULL;
448 switch (pDevInf->version) {
449 case DEVINF_VERSION_UNKNOWN:
450 verDTD_node = add_child_wbxml_node_using_xml_name(pBinder, devinf_node, ELEMENT_VERDTD);
452 case DEVINF_VERSION_10:
453 verDTD_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
454 devinf_node, ELEMENT_VERDTD, ELEMENT_VERDRD_10, strlen(ELEMENT_VERDRD_10));
456 case DEVINF_VERSION_11:
457 verDTD_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
458 devinf_node, ELEMENT_VERDTD, ELEMENT_VERDRD_11, strlen(ELEMENT_VERDRD_11));
460 case DEVINF_VERSION_12:
461 verDTD_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
462 devinf_node, ELEMENT_VERDTD, ELEMENT_VERDRD_12, strlen(ELEMENT_VERDRD_12));
466 if (verDTD_node == NULL) {
467 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
471 WBXMLTreeNode *man_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
472 devinf_node, ELEMENT_MAN, pDevInf->manufacturer, strlen(pDevInf->manufacturer));
473 if (man_node == NULL) {
474 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
478 WBXMLTreeNode *mod_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
479 devinf_node, ELEMENT_MOD, pDevInf->model, strlen(pDevInf->model));
480 if (mod_node == NULL) {
481 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
487 WBXMLTreeNode *oem_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
488 devinf_node, ELEMENT_OEM, pDevInf->oem, strlen(pDevInf->oem));
489 if (oem_node == NULL) {
490 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
495 WBXMLTreeNode *FwV_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
496 devinf_node, ELEMENT_FWV, pDevInf->firmwareVersion, strlen(pDevInf->firmwareVersion));
497 if (FwV_node == NULL) {
498 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
502 WBXMLTreeNode *SwV_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
503 devinf_node, ELEMENT_SWV, pDevInf->softwareVersion, strlen(pDevInf->softwareVersion));
504 if (SwV_node == NULL) {
505 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
509 WBXMLTreeNode *HwV_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
510 devinf_node, ELEMENT_HWV, pDevInf->hardwareVersion, strlen(pDevInf->hardwareVersion));
511 if (HwV_node == NULL) {
512 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
516 WBXMLTreeNode *devID_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
517 devinf_node, ELEMENT_DEVID, pDevInf->devid, strlen(pDevInf->devid));
518 if (devID_node == NULL) {
519 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
523 WBXMLTreeNode *devTyp_node = NULL;
524 switch (pDevInf->devtyp) {
525 case DEVINF_DEVTYPE_UNKNOWN:
526 devTyp_node = add_child_wbxml_node_using_xml_name(pBinder, devinf_node, ELEMENT_DEVTYP);
528 case DEVINF_DEVTYPE_PAGER:
529 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
530 devinf_node, ELEMENT_DEVTYP, ELEMENT_PAGER, strlen(ELEMENT_PAGER));
532 case DEVINF_DEVTYPE_HANDHELD:
533 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
534 devinf_node, ELEMENT_DEVTYP, ELEMENT_HANDHELD, strlen(ELEMENT_HANDHELD));
536 case DEVINF_DEVTYPE_PDA:
537 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
538 devinf_node, ELEMENT_DEVTYP, ELEMENT_PDA, strlen(ELEMENT_PDA));
540 case DEVINF_DEVTYPE_PHONE:
541 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
542 devinf_node, ELEMENT_DEVTYP, ELEMENT_PHONE, strlen(ELEMENT_PHONE));
544 case DEVINF_DEVTYPE_SMARTPHONE:
545 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
546 devinf_node, ELEMENT_DEVTYP, ELEMENT_SMARTPHONE, strlen(ELEMENT_SMARTPHONE));
548 case DEVINF_DEVTYPE_SERVER:
549 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
550 devinf_node, ELEMENT_DEVTYP, ELEMENT_SERVER, strlen(ELEMENT_SERVER));
552 case DEVINF_DEVTYPE_WORKSTATION:
553 devTyp_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
554 devinf_node, ELEMENT_DEVTYP, ELEMENT_WORKSTATION, strlen(ELEMENT_WORKSTATION));
558 if (devTyp_node == NULL) {
559 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
563 if (pDevInf->supportsUTC) {
564 WBXMLTreeNode *supportUTC_node = add_child_wbxml_node_using_xml_name(pBinder,
565 devinf_node, ELEMENT_UTC);
566 if (supportUTC_node == NULL) {
567 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
572 if (pDevInf->supportsLargeObjs) {
573 WBXMLTreeNode *supportLargeObjs_node = add_child_wbxml_node_using_xml_name(pBinder,
574 devinf_node, ELEMENT_SUPPORTLARGEOBJS);
575 if (supportLargeObjs_node == NULL) {
576 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
581 if (pDevInf->supportsNumberOfChanges) {
582 WBXMLTreeNode *supportNumberOfChanges_node = add_child_wbxml_node_using_xml_name(pBinder,
583 devinf_node, ELEMENT_SUPPORTNUMBEROFCHANGES);
584 if (supportNumberOfChanges_node == NULL) {
585 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
590 GList *datastoreIter = NULL;
591 DevInfDataStore *devInfDataStore = NULL;
592 for (datastoreIter = pDevInf->datastores; datastoreIter != NULL; datastoreIter = g_list_next(datastoreIter)) {
593 devInfDataStore = datastoreIter->data;
595 WBXMLTreeNode *datastore_node = add_child_wbxml_node_using_xml_name(pBinder,
596 devinf_node, ELEMENT_DATASTORE);
597 if (datastore_node == NULL) {
598 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
602 WBXMLTreeNode *sourceRef_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
603 datastore_node, ELEMENT_SOURCEREF, devInfDataStore->sourceref, strlen(devInfDataStore->sourceref));
604 if (sourceRef_node == NULL) {
605 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
609 if (devInfDataStore->displayname) {
610 WBXMLTreeNode *displayname_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
611 datastore_node, ELEMENT_DISPLAYNAME, devInfDataStore->displayname, strlen(devInfDataStore->displayname));
612 if (displayname_node == NULL) {
613 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
618 if (devInfDataStore->maxGUIDSize) {
619 char *str_maxguidsize = g_strdup_printf("%u", devInfDataStore->maxGUIDSize);
620 if (str_maxguidsize == NULL) {
621 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
625 WBXMLTreeNode *maxguidsize_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
626 datastore_node, ELEMENT_MAXGUIDSIZE, str_maxguidsize, strlen(str_maxguidsize));
628 if (str_maxguidsize != NULL)
629 free(str_maxguidsize);
631 if (maxguidsize_node == NULL) {
632 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
637 __append_devinf_contenttype_to_wbxml_node(devInfDataStore->rxPref, pBinder,
638 datastore_node, ELEMENT_RX_PREF);
639 if (err != PROTOCOL_BINDER_OK)
643 GList *rxIter = NULL;
644 DevInfContentType *devInfContentType = NULL;
645 for (rxIter = devInfDataStore->rx; rxIter != NULL; rxIter = g_list_next(rxIter)) {
646 devInfContentType = rxIter->data;
647 __append_devinf_contenttype_to_wbxml_node(devInfContentType, pBinder,
648 datastore_node, ELEMENT_RX);
649 if (err != PROTOCOL_BINDER_OK)
653 __append_devinf_contenttype_to_wbxml_node(devInfDataStore->txPref, pBinder,
654 datastore_node, ELEMENT_TX_PREF);
655 if (err != PROTOCOL_BINDER_OK)
659 GList *txIter = NULL;
660 for (txIter = devInfDataStore->tx; txIter != NULL; txIter = g_list_next(txIter)) {
661 devInfContentType = txIter->data;
662 __append_devinf_contenttype_to_wbxml_node(devInfContentType, pBinder,
663 datastore_node, ELEMENT_TX);
664 if (err != PROTOCOL_BINDER_OK)
669 GList *ctcapIter = NULL;
670 DevInfCTCap *devInfCTCap = NULL;
671 for (ctcapIter = devInfDataStore->ctcaps; ctcapIter != NULL; ctcapIter = g_list_next(ctcapIter)) {
672 devInfCTCap = ctcapIter->data;
674 WBXMLTreeNode *ctcap_node = add_child_wbxml_node_using_xml_name(pBinder,
675 datastore_node, ELEMENT_CTCAP);
676 if (ctcap_node == NULL) {
677 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
681 WBXMLTreeNode *cttype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
682 ctcap_node, ELEMENT_CTTYPE, devInfCTCap->ct->cttype, strlen(devInfCTCap->ct->cttype));
683 if (cttype_node == NULL) {
684 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
688 WBXMLTreeNode *verct_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
689 ctcap_node, ELEMENT_VERCT, devInfCTCap->ct->verct, strlen(devInfCTCap->ct->verct));
690 if (verct_node == NULL) {
691 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
697 GList *propertyIter = NULL;
698 DevInfProperty *devInfProperty = NULL;
699 for (propertyIter = devInfCTCap->properties; propertyIter != NULL; propertyIter = g_list_next(propertyIter)) {
700 devInfProperty = propertyIter->data;
702 WBXMLTreeNode *property_node = add_child_wbxml_node_using_xml_name(pBinder,
703 ctcap_node, ELEMENT_PROPERTY);
704 if (property_node == NULL) {
705 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
709 WBXMLTreeNode *propname_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
710 property_node, ELEMENT_PROPNAME, devInfProperty->propName, strlen(devInfProperty->propName));
711 if (propname_node == NULL) {
712 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
716 if (devInfProperty->dataType) {
717 WBXMLTreeNode *datatype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
718 property_node, ELEMENT_DATATYPE, devInfProperty->dataType, strlen(devInfProperty->dataType));
719 if (datatype_node == NULL) {
720 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
725 if (devInfProperty->maxOccur) {
726 char *str_maxoccur = g_strdup_printf("%u", devInfProperty->maxOccur);
727 if (str_maxoccur == NULL) {
728 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
732 WBXMLTreeNode *maxoccur_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
733 property_node, ELEMENT_MAXOCCUR, str_maxoccur, strlen(str_maxoccur));
735 if (str_maxoccur != NULL)
738 if (maxoccur_node == NULL) {
739 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
744 if (devInfProperty->maxSize) {
745 char *str_maxsize = g_strdup_printf("%u", devInfProperty->maxSize);
746 if (str_maxsize == NULL) {
747 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
751 WBXMLTreeNode *maxsize_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
752 property_node, ELEMENT_MAXSIZE, str_maxsize, strlen(str_maxsize));
754 if (str_maxsize != NULL)
757 if (maxsize_node == NULL) {
758 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
763 if (devInfProperty->noTruncate) {
764 WBXMLTreeNode *notruncate_node = add_child_wbxml_node_using_xml_name(pBinder,
765 property_node, ELEMENT_NOTRUNCATE);
766 if (notruncate_node == NULL) {
767 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
772 GList *valenum = NULL;
774 for (valenum = devInfProperty->valEnums; valenum != NULL; valenum = g_list_next(valenum)) {
776 WBXMLTreeNode *valenum_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
777 property_node, ELEMENT_VALENUM, val, strlen(val));
778 if (valenum_node == NULL) {
779 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
784 if (devInfProperty->displayName) {
785 WBXMLTreeNode *displayname_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
786 property_node, ELEMENT_DISPLAYNAME, devInfProperty->displayName, strlen(devInfProperty->displayName));
787 if (displayname_node == NULL) {
788 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
793 GList *propparamIter = NULL;
794 DevInfPropParam *devInfPropParam = NULL;
795 for (propparamIter = devInfProperty->propParams; propparamIter != NULL; propparamIter = g_list_next(propparamIter)) {
796 devInfPropParam = propparamIter->data;
798 WBXMLTreeNode *propparam_node = add_child_wbxml_node_using_xml_name(pBinder,
799 property_node, ELEMENT_PROPPARAM);
800 if (propparam_node == NULL) {
801 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
805 WBXMLTreeNode *paramname_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
806 propparam_node, ELEMENT_PARAMNAME, devInfPropParam->paramName, strlen(devInfPropParam->paramName));
807 if (paramname_node == NULL) {
808 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
812 if (devInfPropParam->dataType) {
813 WBXMLTreeNode *datatype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
814 propparam_node, ELEMENT_DATATYPE, devInfPropParam->dataType, strlen(devInfPropParam->dataType));
815 if (datatype_node == NULL) {
816 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
823 for (valenum = devInfPropParam->valEnums; valenum != NULL; valenum = g_list_next(valenum)) {
825 WBXMLTreeNode *valenum_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
826 propparam_node, ELEMENT_VALENUM, val, strlen(val));
827 if (valenum_node == NULL) {
828 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
833 if (devInfPropParam->displayName) {
834 WBXMLTreeNode *displayname_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
835 propparam_node, ELEMENT_DISPLAYNAME, devInfPropParam->displayName, strlen(devInfPropParam->displayName));
836 if (displayname_node == NULL) {
837 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
846 if (devInfDataStore->supportsHierarchicalSync) {
847 WBXMLTreeNode *supportshierarchicalsync_node = add_child_wbxml_node_using_xml_name(pBinder,
848 datastore_node, ELEMENT_SUPPORTHIERARCHICALSYNC);
849 if (supportshierarchicalsync_node == NULL) {
850 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
855 WBXMLTreeNode *synccap_node = add_child_wbxml_node_using_xml_name(pBinder,
856 datastore_node, ELEMENT_SYNCCAP);
857 if (synccap_node == NULL) {
858 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
862 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_TWO_WAY)) {
863 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
864 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_1, strlen(ELEMENT_SYNCTYPE_1));
865 if (synctype_node == NULL) {
866 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
870 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_SLOW_SYNC)) {
871 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
872 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_2, strlen(ELEMENT_SYNCTYPE_2));
873 if (synctype_node == NULL) {
874 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
878 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_ONE_WAY_FROM_CLIENT)) {
879 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
880 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_3, strlen(ELEMENT_SYNCTYPE_3));
881 if (synctype_node == NULL) {
882 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
886 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_REFRESH_FROM_CLIENT)) {
887 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
888 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_4, strlen(ELEMENT_SYNCTYPE_4));
889 if (synctype_node == NULL) {
890 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
894 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_ONE_WAY_FROM_SERVER)) {
895 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
896 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_5, strlen(ELEMENT_SYNCTYPE_5));
897 if (synctype_node == NULL) {
898 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
902 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_REFRESH_FROM_SERVER)) {
903 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
904 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_6, strlen(ELEMENT_SYNCTYPE_6));
905 if (synctype_node == NULL) {
906 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
910 if (get_devinf_datastore_synccap(devInfDataStore, DEVINF_SYNCTYPE_SERVER_ALERTED_SYNC)) {
911 WBXMLTreeNode *synctype_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
912 synccap_node, ELEMENT_SYNCTYPE, ELEMENT_SYNCTYPE_7, strlen(ELEMENT_SYNCTYPE_7));
913 if (synctype_node == NULL) {
914 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
918 /*TODO filter-rx, filterCap*/
920 undo_switch_protocol(pBinder);
921 *ppWbxml_dom_node = item_node;
928 FW_LOGE("error : %d", err);
933 static PROTOCOL_BINDER_ERROR __oma_ds_binder_syncml_start_converter_function(protocol_binder *pBinder,
934 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
937 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
938 WBXMLTreeNode *syncml_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_SYNCML);
939 if (syncml_node == NULL) {
940 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
944 *ppWbxml_dom_node = syncml_node;
950 FW_LOGE("error :%d", err);
955 static PROTOCOL_BINDER_ERROR __oma_ds_binder_header_converter_function(protocol_binder *pBinder,
956 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
959 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
960 SyncHdr *pSyncHdr = (SyncHdr *)pContent;
962 /* add SyncHdr, VerDTD, VerProto node */
963 WBXMLTreeNode *synchdr_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_SYNCHDR);
964 if (synchdr_node == NULL) {
965 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
970 char *verDTD = ELEMENT_VERDTD;
971 char *verProto = ELEMENT_VERPROTO;
973 char *verDTD_data = NULL;
974 char *verProto_data = NULL;
975 if (pSyncHdr->version == VERSION_10) {
976 verDTD_data = ELEMENT_VERDRD_10;
977 verProto_data = ELEMENT_VERPROTO_10;
978 } else if (pSyncHdr->version == VERSION_11) {
979 verDTD_data = ELEMENT_VERDRD_11;
980 verProto_data = ELEMENT_VERPROTO_11;
981 } else if (pSyncHdr->version == VERSION_12) {
982 verDTD_data = ELEMENT_VERDRD_12;
983 verProto_data = ELEMENT_VERPROTO_12;
986 if (verDTD_data == NULL || verProto_data == NULL) {
987 err = PROTOCOL_BINDER_NOT_DEFINED;
991 WBXMLTreeNode *verdtd_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
992 synchdr_node, verDTD, verDTD_data, strlen(verDTD_data));
993 if (verdtd_node == NULL) {
994 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
998 WBXMLTreeNode *verProto_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
999 synchdr_node, verProto, verProto_data, strlen(verProto_data));
1000 if (verProto_node == NULL) {
1001 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1006 WBXMLTreeNode *sessionID_node = NULL;
1007 if (pSyncHdr->sessionID != NULL)
1008 sessionID_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1009 synchdr_node, ELEMENT_SESSIONID, pSyncHdr->sessionID, strlen(pSyncHdr->sessionID));
1011 sessionID_node = add_child_wbxml_node_using_xml_name(pBinder,
1012 synchdr_node, ELEMENT_SESSIONID);
1014 if (sessionID_node == NULL) {
1015 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1020 char *msgID_data = g_strdup_printf("%u", pSyncHdr->messageID);
1021 if (msgID_data == NULL) {
1022 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1026 WBXMLTreeNode *msgID_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1027 synchdr_node, ELEMENT_MSGID, msgID_data, strlen(msgID_data));
1029 if (msgID_data != NULL)
1032 if (msgID_node == NULL) {
1033 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1037 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
1038 synchdr_node, ELEMENT_TARGET);
1039 if (target_node == NULL) {
1040 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1044 err = __append_location_to_wbxml_node(pSyncHdr->target, pBinder, target_node);
1045 if (err != PROTOCOL_BINDER_OK)
1049 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
1050 synchdr_node, ELEMENT_SOURCE);
1051 if (source_node == NULL) {
1052 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1056 err = __append_location_to_wbxml_node(pSyncHdr->source, pBinder, source_node);
1057 if (err != PROTOCOL_BINDER_OK)
1061 if (pSyncHdr->responseURI) {
1062 WBXMLTreeNode *respuri_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1063 synchdr_node, ELEMENT_RESPURI, pSyncHdr->responseURI, strlen(pSyncHdr->responseURI));
1064 if (respuri_node == NULL) {
1065 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1071 if (pSyncHdr->noResponse) {
1072 WBXMLTreeNode *noResponse_node = add_child_wbxml_node_using_xml_name(pBinder,
1073 synchdr_node, ELEMENT_NORESP);
1074 if (noResponse_node == NULL) {
1075 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1081 if (pSyncHdr->cred) {
1082 err = __append_cred_to_wbxml_node(pSyncHdr->cred, pBinder, synchdr_node);
1083 if (err != PROTOCOL_BINDER_OK)
1088 char *meta = ELEMENT_META;
1089 if (pSyncHdr->maxmsgsize != 0 || pSyncHdr->maxobjsize != 0) {
1090 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
1091 synchdr_node, meta);
1092 if (meta_node == NULL) {
1093 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1097 unsigned int maxmsgsize = pSyncHdr->maxmsgsize;
1098 unsigned int maxobjsize = pSyncHdr->maxobjsize;
1101 if (maxmsgsize != 0) {
1102 char *str_maxmsgsize = g_strdup_printf("%u", maxmsgsize);
1103 if (str_maxmsgsize == NULL) {
1104 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1108 WBXMLTreeNode *maxmsgsize_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1109 meta_node, ELEMENT_MAXMSGSIZE, str_maxmsgsize, strlen(str_maxmsgsize));
1110 if (str_maxmsgsize != NULL)
1111 free(str_maxmsgsize);
1113 if (maxmsgsize_node == NULL) {
1114 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1119 if (maxobjsize != 0) {
1120 char *str_maxobjsize = g_strdup_printf("%u", maxobjsize);
1121 if (str_maxobjsize == NULL) {
1122 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1126 WBXMLTreeNode *maxobjsize_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1127 meta_node, ELEMENT_MAXOBJSIZE, str_maxobjsize, strlen(str_maxobjsize));
1128 if (str_maxobjsize != NULL)
1129 free(str_maxobjsize);
1131 if (maxobjsize_node == NULL) {
1132 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1138 *ppWbxml_dom_node = synchdr_node;
1144 FW_LOGE("error :%d", err);
1148 static PROTOCOL_BINDER_ERROR __oma_ds_binder_final_converter_function(protocol_binder *pBinder,
1149 Content_Ptr pContent,
1150 WBXMLTreeNode **ppWbxml_dom_node)
1153 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1155 WBXMLTreeNode *final_node = create_wbxml_node_using_xml_name(pBinder, "Final");
1156 if (final_node == NULL) {
1157 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1161 *ppWbxml_dom_node = final_node;
1167 FW_LOGE("error :%d", err);
1173 static PROTOCOL_BINDER_ERROR __oma_ds_binder_body_start_converter_function(protocol_binder *pBinder,
1174 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1177 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1179 WBXMLTreeNode *syncbody_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_SYNCBODY);
1180 if (syncbody_node == NULL) {
1181 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1185 *ppWbxml_dom_node = syncbody_node;
1191 FW_LOGE("error :%d", err);
1195 static PROTOCOL_BINDER_ERROR __oma_ds_binder_status_converter_function(protocol_binder *pBinder,
1196 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1199 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1201 Status *pStatus = (Status *)pContent;
1202 assert(pStatus != NULL);
1204 CommandType type = pStatus->type;
1206 char *str_cmdID = NULL;
1207 char *str_msgRef = NULL;
1208 char *str_cmdRef = NULL;
1210 WBXMLTreeNode *status_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_STATUS);
1211 if (status_node == NULL) {
1212 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1216 unsigned int cmdID = pStatus->cmdID;
1217 str_cmdID = g_strdup_printf("%u", cmdID);
1218 if (str_cmdID == NULL) {
1219 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1223 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1224 status_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1225 if (cmdid_node == NULL) {
1226 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1230 unsigned int msgRef = pStatus->msgRef;
1231 str_msgRef = g_strdup_printf("%u", msgRef);
1232 if (str_msgRef == NULL) {
1233 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1237 WBXMLTreeNode *msgref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1238 status_node, ELEMENT_MSGREF, str_msgRef, strlen(str_msgRef));
1239 if (msgref_node == NULL) {
1240 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1244 unsigned int cmdRef = pStatus->cmdRef;
1245 str_cmdRef = g_strdup_printf("%u", cmdRef);
1246 if (str_cmdRef == NULL) {
1247 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1251 WBXMLTreeNode *cmdref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1252 status_node, ELEMENT_CMDREF, str_cmdRef, strlen(str_cmdRef));
1253 if (cmdref_node == NULL) {
1254 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1258 char *str_command = NULL;
1260 case COMMAND_TYPE_ALERT:
1262 str_command = ELEMENT_ALERT;
1265 case COMMAND_TYPE_SYNC_START:
1267 str_command = ELEMENT_SYNC;
1270 case COMMAND_TYPE_PUT:
1272 str_command = ELEMENT_PUT;
1275 case COMMAND_TYPE_HEADER:
1277 str_command = ELEMENT_SYNCHDR;
1280 case COMMAND_TYPE_ADD:
1282 str_command = ELEMENT_ADD;
1285 case COMMAND_TYPE_REPLACE:
1287 str_command = ELEMENT_REPLACE;
1290 case COMMAND_TYPE_DELETE:
1292 str_command = ELEMENT_DELETE;
1295 case COMMAND_TYPE_MAP:
1297 str_command = ELEMENT_MAP;
1300 case COMMAND_TYPE_GET:
1302 str_command = ELEMENT_GET;
1305 case COMMAND_TYPE_RESULTS:
1307 str_command = ELEMENT_RESULTS;
1314 if (str_command == NULL) {
1315 err = PROTOCOL_BINDER_NOT_DEFINED;
1319 WBXMLTreeNode *command_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1320 status_node, ELEMENT_CMD, str_command, strlen(str_command));
1321 if (command_node == NULL) {
1322 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1326 if (pStatus->targetRef) {
1327 WBXMLTreeNode *targetref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1328 status_node, ELEMENT_TARGETREF, pStatus->targetRef->locURI, strlen(pStatus->targetRef->locURI));
1329 if (targetref_node == NULL) {
1330 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1335 if (pStatus->sourceRef) {
1336 WBXMLTreeNode *sourceref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1337 status_node, ELEMENT_SOURCEREF, pStatus->sourceRef->locURI, strlen(pStatus->sourceRef->locURI));
1338 if (sourceref_node == NULL) {
1339 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1344 if (pStatus->cred) {
1345 err = __append_cred_to_wbxml_node(pStatus->cred, pBinder, status_node);
1346 if (err != PROTOCOL_BINDER_OK)
1350 if (pStatus->chal) {
1354 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1355 status_node, ELEMENT_DATA, pStatus->data, strlen(pStatus->data));
1356 if (data_node == NULL) {
1357 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1361 if (type == COMMAND_TYPE_ALERT) {
1362 if (pStatus->item) {
1363 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
1364 status_node, ELEMENT_ITEM);
1365 if (item_node == NULL) {
1366 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1370 WBXMLTreeNode *item_data_node = add_child_wbxml_node_using_xml_name(pBinder,
1371 item_node, ELEMENT_DATA);
1372 if (item_data_node == NULL) {
1373 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1377 WBXMLTreeNode *item_data_Anchor_node = add_child_wbxml_node_using_xml_name(pBinder,
1378 item_data_node, ELEMENT_ANCHOR);
1379 if (item_data_Anchor_node == NULL) {
1380 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1384 if (pStatus->item->anchor) {
1385 WBXMLTreeNode *item_data_Anchor_Next_node =
1386 add_child_wbxml_node_using_xml_name_with_text(pBinder,
1387 item_data_Anchor_node, ELEMENT_NEXT, pStatus->item->anchor->nextAnchor,
1388 strlen(pStatus->item->anchor->nextAnchor));
1390 if (item_data_Anchor_Next_node == NULL) {
1391 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1398 if (str_cmdID != NULL)
1401 if (str_cmdRef != NULL)
1404 if (str_msgRef != NULL)
1407 *ppWbxml_dom_node = status_node;
1414 if (str_cmdID != NULL)
1417 if (str_cmdRef != NULL)
1420 if (str_msgRef != NULL)
1423 FW_LOGE("error :%d", err);
1428 static PROTOCOL_BINDER_ERROR __oma_ds_binder_alert_command_converter_function(protocol_binder *pBinder,
1429 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1432 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1434 Command *pCommand = (Command *)pContent;
1436 CommandAlertPrivate *pAlert = (CommandAlertPrivate *)(&(pCommand->private));
1438 char *str_cmdID = NULL;
1439 char *str_alert_type = NULL;
1442 err = PROTOCOL_BINDER_NOT_DEFINED;
1446 if (pAlert->type == ALERT_UNKNOWN) {
1448 err = PROTOCOL_BINDER_INVALID_INPUT_PARAMETER;
1452 WBXMLTreeNode *alert_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_ALERT);
1453 if (alert_node == NULL) {
1454 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1458 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1459 if (str_cmdID == NULL) {
1460 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1464 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1465 alert_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1466 if (cmdid_node == NULL) {
1467 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1471 if (pCommand->noResp) {
1472 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
1473 alert_node, ELEMENT_NORESP);
1474 if (noResp_node == NULL) {
1475 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1480 if (pCommand->cred) {
1481 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, alert_node);
1482 if (err != PROTOCOL_BINDER_OK)
1486 str_alert_type = g_strdup_printf("%u", pAlert->type);
1487 if (str_alert_type == NULL) {
1488 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1492 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1493 alert_node, ELEMENT_DATA, str_alert_type, strlen(str_alert_type));
1494 if (data_node == NULL) {
1495 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1500 if (pCommand->source != NULL && pCommand->target != NULL) {
1501 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
1502 alert_node, ELEMENT_ITEM);
1503 if (item_node == NULL) {
1504 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1508 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
1509 item_node, ELEMENT_TARGET);
1510 if (target_node == NULL) {
1511 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1515 err = __append_location_to_wbxml_node(pCommand->target, pBinder, target_node);
1516 if (err != PROTOCOL_BINDER_OK)
1520 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
1521 item_node, ELEMENT_SOURCE);
1522 if (source_node == NULL) {
1523 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1527 err = __append_location_to_wbxml_node(pCommand->source, pBinder, source_node);
1528 if (err != PROTOCOL_BINDER_OK)
1532 if (pAlert->anchor != NULL) {
1533 err = __append_anchor_to_wbxml_node(pAlert->anchor, pBinder, item_node);
1534 if (err != PROTOCOL_BINDER_OK)
1539 if (str_cmdID != NULL)
1542 if (str_alert_type != NULL)
1543 free(str_alert_type);
1545 *ppWbxml_dom_node = alert_node;
1552 if (str_cmdID != NULL)
1555 if (str_alert_type != NULL)
1556 free(str_alert_type);
1558 FW_LOGE("error :%d", err);
1562 static PROTOCOL_BINDER_ERROR __oma_ds_binder_results_command_converter_function(protocol_binder *pBinder,
1563 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1566 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1568 Command *pCommand = (Command *)pContent;
1569 CommandResultsPrivate *pResults = (CommandResultsPrivate *)(&(pCommand->private));
1571 char *str_cmdID = NULL;
1572 char *str_cmdRef = NULL;
1573 char *str_msgRef = NULL;
1576 err = PROTOCOL_BINDER_NOT_DEFINED;
1580 if (pResults->item == NULL) {
1581 err = PROTOCOL_BINDER_NOT_DEFINED;
1585 char *content_type = (pResults->item)->contenttype;
1586 if (!content_type) {
1588 err = PROTOCOL_BINDER_NOT_DEFINED;
1593 WBXMLTreeNode *results_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_RESULTS);
1594 if (results_node == NULL) {
1595 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1599 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1600 if (str_cmdID != NULL) {
1601 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1602 results_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1603 if (cmdid_node == NULL) {
1604 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1610 if (pResults->msgRef) {
1611 str_msgRef = g_strdup_printf("%u", pResults->msgRef);
1612 if (str_msgRef == NULL) {
1613 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1617 WBXMLTreeNode *msgref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1618 results_node, ELEMENT_MSGREF, str_msgRef, strlen(str_msgRef));
1619 if (msgref_node == NULL) {
1620 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1625 str_cmdRef = g_strdup_printf("%u", pResults->cmdRef);
1626 if (str_cmdRef == NULL) {
1627 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1631 WBXMLTreeNode *msgref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1632 results_node, ELEMENT_CMDREF, str_cmdRef, strlen(str_cmdRef));
1633 if (msgref_node == NULL) {
1634 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1639 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
1640 results_node, ELEMENT_META);
1641 if (meta_node == NULL) {
1642 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1646 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1647 meta_node, ELEMENT_TYPE, content_type, strlen(content_type));
1648 if (type_node == NULL) {
1649 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1654 if (pResults->targetRef) {
1655 WBXMLTreeNode *targetref_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1656 results_node, ELEMENT_TARGETREF, pResults->targetRef->locURI, strlen(pResults->targetRef->locURI));
1657 if (targetref_node == NULL) {
1658 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1663 if (str_cmdID != NULL)
1666 if (str_cmdRef != NULL)
1669 if (str_msgRef != NULL)
1672 *ppWbxml_dom_node = results_node;
1679 if (str_cmdID != NULL)
1682 if (str_cmdRef != NULL)
1685 if (str_msgRef != NULL)
1688 FW_LOGE("error :%d", err);
1693 static PROTOCOL_BINDER_ERROR __oma_ds_binder_put_command_converter_function(protocol_binder *pBinder,
1694 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1697 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1699 Command *pCommand = (Command *)pContent;
1700 CommandAccessPrivate *pAccess = (CommandAccessPrivate *)(&(pCommand->private));
1701 char *str_cmdID = NULL;
1704 err = PROTOCOL_BINDER_NOT_DEFINED;
1708 char *content_type = (pAccess->item)->contenttype;
1709 if (!content_type) {
1711 err = PROTOCOL_BINDER_NOT_DEFINED;
1715 WBXMLTreeNode *put_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_PUT);
1716 if (put_node == NULL) {
1717 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1721 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1722 if (str_cmdID == NULL) {
1723 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1727 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1728 put_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1729 if (cmdid_node == NULL) {
1730 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1734 if (pCommand->noResp) {
1735 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
1736 put_node, ELEMENT_NORESP);
1737 if (noResp_node == NULL) {
1738 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1743 if (pCommand->cred) {
1744 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, put_node);
1745 if (err != PROTOCOL_BINDER_OK)
1750 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
1751 put_node, ELEMENT_META);
1752 if (meta_node == NULL) {
1753 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1757 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1758 meta_node, ELEMENT_TYPE, content_type, strlen(content_type));
1759 if (type_node == NULL) {
1760 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1765 if (str_cmdID != NULL)
1768 *ppWbxml_dom_node = put_node;
1775 if (str_cmdID != NULL)
1778 FW_LOGE("error :%d", err);
1782 static PROTOCOL_BINDER_ERROR __oma_ds_binder_get_command_converter_function(protocol_binder *pBinder,
1783 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1786 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1788 Command *pCommand = (Command *)pContent;
1789 CommandAccessPrivate *pAccess = (CommandAccessPrivate *)(&(pCommand->private));
1790 char *str_cmdID = NULL;
1793 err = PROTOCOL_BINDER_NOT_DEFINED;
1797 if (!pAccess->item) {
1798 err = PROTOCOL_BINDER_NOT_DEFINED;
1802 char *content_type = (pAccess->item)->contenttype;
1804 if (!content_type) {
1806 err = PROTOCOL_BINDER_NOT_DEFINED;
1810 WBXMLTreeNode *get_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_GET);
1812 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1813 if (str_cmdID == NULL) {
1814 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1818 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1819 get_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1820 if (cmdid_node == NULL) {
1821 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1825 if (pCommand->noResp) {
1826 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
1827 get_node, ELEMENT_NORESP);
1828 if (noResp_node == NULL) {
1829 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1834 if (pCommand->cred) {
1835 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, get_node);
1836 if (err != PROTOCOL_BINDER_OK)
1841 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
1842 get_node, ELEMENT_META);
1843 if (meta_node == NULL) {
1844 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1848 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1849 meta_node, ELEMENT_TYPE, content_type, strlen(content_type));
1850 if (type_node == NULL) {
1851 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1856 if (pAccess->item) {
1857 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
1858 get_node, ELEMENT_ITEM);
1859 if (item_node == NULL) {
1860 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1864 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
1865 item_node, ELEMENT_TARGET);
1866 if (target_node == NULL) {
1867 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1871 err = __append_location_to_wbxml_node(pAccess->item->target, pBinder, target_node);
1872 if (err != PROTOCOL_BINDER_OK)
1876 *ppWbxml_dom_node = get_node;
1888 FW_LOGE("error :%d", err);
1892 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_start_command_converter_function(protocol_binder *pBinder,
1893 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
1896 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
1898 Command *pCommand = (Command *)pContent;
1900 char *str_cmdID = NULL;
1901 char *numChanged_str = NULL;
1903 WBXMLTreeNode *sync_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_SYNC);
1904 if (sync_node == NULL) {
1905 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1909 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
1910 if (str_cmdID == NULL) {
1911 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1915 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1916 sync_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
1917 if (cmdid_node == NULL) {
1918 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1922 if (pCommand->noResp) {
1923 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
1924 sync_node, ELEMENT_NORESP);
1925 if (noResp_node == NULL) {
1926 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1931 if (pCommand->cred) {
1932 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, sync_node);
1933 if (err != PROTOCOL_BINDER_OK)
1937 if (pCommand->source != NULL && pCommand->target != NULL) {
1938 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
1939 sync_node, ELEMENT_TARGET);
1940 if (target_node == NULL) {
1941 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1945 err = __append_location_to_wbxml_node(pCommand->target, pBinder, target_node);
1946 if (err != PROTOCOL_BINDER_OK)
1950 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
1951 sync_node, ELEMENT_SOURCE);
1952 if (source_node == NULL) {
1953 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1957 err = __append_location_to_wbxml_node(pCommand->source, pBinder, source_node);
1958 if (err != PROTOCOL_BINDER_OK)
1963 if (pCommand->private.sync.hasNumChanged) {
1964 numChanged_str = g_strdup_printf("%u", pCommand->private.sync.numChanged);
1965 if (numChanged_str == NULL) {
1966 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1970 WBXMLTreeNode *numberOfChanges_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
1971 sync_node, ELEMENT_NUMBEROFCHANGES, numChanged_str, strlen(numChanged_str));
1972 if (numberOfChanges_node == NULL) {
1973 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
1978 if (str_cmdID != NULL)
1981 if (numChanged_str != NULL)
1982 free(numChanged_str);
1984 *ppWbxml_dom_node = sync_node;
1991 if (str_cmdID != NULL)
1994 if (numChanged_str != NULL)
1995 free(numChanged_str);
1997 FW_LOGE("error :%d", err);
2002 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_end_command_converter_function(protocol_binder *pBinder,
2003 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
2007 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2014 static PROTOCOL_BINDER_ERROR __oma_ds_binder_add_command_converter_function(protocol_binder *pBinder,
2015 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
2018 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2020 char *str_cmdID = NULL;
2021 char *str_size = NULL;
2023 Command *pCommand = (Command *)pContent;
2025 CommandChangePrivate *pChange = (CommandChangePrivate *)(&(pCommand->private));
2028 err = PROTOCOL_BINDER_NOT_DEFINED;
2032 WBXMLTreeNode *add_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_ADD);
2033 if (add_node == NULL) {
2034 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2038 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
2039 if (str_cmdID == NULL) {
2040 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2044 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2045 add_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
2046 if (cmdid_node == NULL) {
2047 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2051 if (pCommand->noResp) {
2052 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
2053 add_node, ELEMENT_NORESP);
2054 if (noResp_node == NULL) {
2055 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2060 if (pCommand->cred) {
2061 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, add_node);
2062 if (err != PROTOCOL_BINDER_OK)
2068 for (Iter = pChange->items; Iter != NULL; Iter = g_list_next(Iter)) {
2069 item = (Iter->data);
2071 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
2072 add_node, ELEMENT_ITEM);
2073 if (item_node == NULL) {
2074 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2078 if (item->source != NULL) {
2079 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
2080 item_node, ELEMENT_SOURCE);
2081 if (source_node == NULL) {
2082 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2086 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
2087 if (err != PROTOCOL_BINDER_OK)
2092 if (item->target != NULL) {
2093 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
2094 item_node, ELEMENT_TARGET);
2095 if (target_node == NULL) {
2096 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2100 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
2101 if (err != PROTOCOL_BINDER_OK)
2105 if (item->contenttype) {
2106 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
2107 item_node, ELEMENT_META);
2108 if (meta_node == NULL) {
2109 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2113 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2114 meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
2115 if (type_node == NULL) {
2116 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2120 if (item->moreData) {
2122 str_size = g_strdup_printf("%u", item->size);
2123 if (str_size == NULL) {
2124 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2128 WBXMLTreeNode *size_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2129 meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
2130 if (size_node == NULL) {
2131 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2138 if (item->dataType == ITEM_DATA) {
2139 if (item->private.data) {
2140 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_cdata(pBinder,
2141 item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
2142 if (data_node == NULL) {
2143 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2149 if (item->moreData) {
2150 WBXMLTreeNode *moredata_node = add_child_wbxml_node_using_xml_name(pBinder,
2151 item_node, ELEMENT_MOREDATA);
2152 if (moredata_node == NULL) {
2153 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2159 if (str_cmdID != NULL)
2162 if (str_size != NULL)
2165 *ppWbxml_dom_node = add_node;
2172 if (str_cmdID != NULL)
2175 if (str_size != NULL)
2178 FW_LOGE("error :%d", err);
2182 static PROTOCOL_BINDER_ERROR __oma_ds_binder_replace_command_converter_function(protocol_binder *pBinder,
2183 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
2186 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2188 char *str_cmdID = NULL;
2189 char *str_size = NULL;
2191 Command *pCommand = (Command *)pContent;
2193 CommandChangePrivate *pChange = (CommandChangePrivate *)(&(pCommand->private));
2196 err = PROTOCOL_BINDER_NOT_DEFINED;
2200 WBXMLTreeNode *replace_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_REPLACE);
2201 if (replace_node == NULL) {
2202 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2206 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
2207 if (str_cmdID == NULL) {
2208 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2212 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2213 replace_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
2214 if (cmdid_node == NULL) {
2215 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2219 if (pCommand->noResp) {
2220 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
2221 replace_node, ELEMENT_NORESP);
2222 if (noResp_node == NULL) {
2223 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2228 if (pCommand->cred) {
2229 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, replace_node);
2230 if (err != PROTOCOL_BINDER_OK)
2236 for (Iter = pChange->items; Iter != NULL; Iter = g_list_next(Iter)) {
2237 item = (Iter->data);
2239 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
2240 replace_node, ELEMENT_ITEM);
2241 if (item_node == NULL) {
2242 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2246 if (item->source != NULL) {
2247 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
2248 item_node, ELEMENT_SOURCE);
2249 if (source_node == NULL) {
2250 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2253 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
2254 if (err != PROTOCOL_BINDER_OK)
2259 if (item->target != NULL) {
2260 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
2261 item_node, ELEMENT_TARGET);
2262 if (target_node == NULL) {
2263 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2266 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
2267 if (err != PROTOCOL_BINDER_OK)
2272 if (item->contenttype) {
2273 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
2274 item_node, ELEMENT_META);
2275 if (meta_node == NULL) {
2276 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2280 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2281 meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
2282 if (type_node == NULL) {
2283 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2287 if (item->moreData) {
2289 str_size = g_strdup_printf("%u", item->size);
2290 if (str_size == NULL) {
2291 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2295 WBXMLTreeNode *size_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2296 meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
2297 if (size_node == NULL) {
2298 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2305 if (item->dataType == ITEM_DATA) {
2306 if (item->private.data) {
2307 WBXMLTreeNode *data_node = add_child_wbxml_node_using_xml_name_with_cdata(pBinder,
2308 item_node, ELEMENT_DATA, item->private.data, strlen(item->private.data));
2309 if (data_node == NULL) {
2310 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2316 if (item->moreData) {
2317 WBXMLTreeNode *moredata_node = add_child_wbxml_node_using_xml_name(pBinder,
2318 item_node, ELEMENT_MOREDATA);
2319 if (moredata_node == NULL) {
2320 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2327 if (str_cmdID != NULL)
2330 if (str_size != NULL)
2333 *ppWbxml_dom_node = replace_node;
2340 if (str_cmdID != NULL)
2343 if (str_size != NULL)
2346 FW_LOGE("error :%d", err);
2350 static PROTOCOL_BINDER_ERROR __oma_ds_binder_delete_command_converter_function(protocol_binder *pBinder,
2351 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
2354 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2356 char *str_cmdID = NULL;
2357 char *str_size = NULL;
2359 Command *pCommand = (Command *)pContent;
2361 CommandChangePrivate *pChange = (CommandChangePrivate *)(&(pCommand->private));
2364 err = PROTOCOL_BINDER_NOT_DEFINED;
2368 WBXMLTreeNode *delete_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_DELETE);
2369 if (delete_node == NULL) {
2370 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2374 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
2375 if (str_cmdID == NULL) {
2376 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2380 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2381 delete_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
2382 if (cmdid_node == NULL) {
2383 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2387 if (pCommand->noResp) {
2388 WBXMLTreeNode *noResp_node = add_child_wbxml_node_using_xml_name(pBinder,
2389 delete_node, ELEMENT_NORESP);
2390 if (noResp_node == NULL) {
2391 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2399 if (pCommand->cred) {
2400 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, delete_node);
2401 if (err != PROTOCOL_BINDER_OK)
2407 for (Iter = pCommand->private.change.items; Iter != NULL; Iter = g_list_next(Iter)) {
2408 item = (Iter->data);
2410 WBXMLTreeNode *item_node = add_child_wbxml_node_using_xml_name(pBinder,
2411 delete_node, ELEMENT_ITEM);
2412 if (item_node == NULL) {
2413 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2417 if (item->source != NULL) {
2418 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
2419 item_node, ELEMENT_SOURCE);
2420 if (source_node == NULL) {
2421 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2425 err = __append_location_to_wbxml_node(item->source, pBinder, source_node);
2426 if (err != PROTOCOL_BINDER_OK)
2431 if (item->target != NULL) {
2432 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
2433 item_node, ELEMENT_TARGET);
2434 if (target_node == NULL) {
2435 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2439 err = __append_location_to_wbxml_node(item->target, pBinder, target_node);
2440 if (err != PROTOCOL_BINDER_OK)
2445 if (item->contenttype) {
2446 WBXMLTreeNode *meta_node = add_child_wbxml_node_using_xml_name(pBinder,
2447 item_node, ELEMENT_META);
2448 if (meta_node == NULL) {
2449 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2453 WBXMLTreeNode *type_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2454 meta_node, ELEMENT_TYPE, item->contenttype, strlen(item->contenttype));
2455 if (type_node == NULL) {
2456 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2461 str_size = g_strdup_printf("%u", item->size);
2462 if (str_size == NULL) {
2463 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2467 WBXMLTreeNode *size_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2468 meta_node, ELEMENT_SIZE, str_size, strlen(str_size));
2469 if (size_node == NULL) {
2470 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2477 if (str_cmdID != NULL)
2480 if (str_size != NULL)
2483 *ppWbxml_dom_node = delete_node;
2490 if (str_cmdID != NULL)
2493 if (str_size != NULL)
2496 FW_LOGE("error :%d", err);
2500 static PROTOCOL_BINDER_ERROR __oma_ds_binder_map_command_converter_function(protocol_binder *pBinder,
2501 Content_Ptr pContent, WBXMLTreeNode **ppWbxml_dom_node)
2504 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2505 char *str_cmdID = NULL;
2507 Command *pCommand = (Command *)pContent;
2509 WBXMLTreeNode *map_node = create_wbxml_node_using_xml_name(pBinder, ELEMENT_MAP);
2511 str_cmdID = g_strdup_printf("%u", pCommand->cmdID);
2512 if (str_cmdID == NULL) {
2513 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2517 WBXMLTreeNode *cmdid_node = add_child_wbxml_node_using_xml_name_with_text(pBinder,
2518 map_node, ELEMENT_CMDID, str_cmdID, strlen(str_cmdID));
2519 if (cmdid_node == NULL) {
2520 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2524 if (pCommand->source != NULL && pCommand->target != NULL) {
2525 WBXMLTreeNode *target_node = add_child_wbxml_node_using_xml_name(pBinder,
2526 map_node, ELEMENT_TARGET);
2527 if (target_node == NULL) {
2528 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2532 err = __append_location_to_wbxml_node(pCommand->target, pBinder, target_node);
2533 if (err != PROTOCOL_BINDER_OK)
2537 WBXMLTreeNode *source_node = add_child_wbxml_node_using_xml_name(pBinder,
2538 map_node, ELEMENT_SOURCE);
2539 if (source_node == NULL) {
2540 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2544 err = __append_location_to_wbxml_node(pCommand->source, pBinder, source_node);
2545 if (err != PROTOCOL_BINDER_OK)
2550 if (pCommand->cred) {
2551 err = __append_cred_to_wbxml_node(pCommand->cred, pBinder, map_node);
2552 if (err != PROTOCOL_BINDER_OK)
2558 for (iter = pCommand->private.map.items; iter != NULL; iter = g_list_next(iter)) {
2560 WBXMLTreeNode *mapItem_node = add_child_wbxml_node_using_xml_name(pBinder,
2561 map_node, ELEMENT_MAPITEM);
2562 if (mapItem_node == NULL) {
2563 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2567 if (item->source != NULL && item->target != NULL) {
2568 WBXMLTreeNode *item_target_node = add_child_wbxml_node_using_xml_name(pBinder,
2569 mapItem_node, ELEMENT_TARGET);
2570 if (item_target_node == NULL) {
2571 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2575 err = __append_location_to_wbxml_node(item->target, pBinder, item_target_node);
2576 if (err != PROTOCOL_BINDER_OK)
2580 WBXMLTreeNode *item_source_node = add_child_wbxml_node_using_xml_name(pBinder,
2581 mapItem_node, ELEMENT_SOURCE);
2582 if (item_source_node == NULL) {
2583 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2587 err = __append_location_to_wbxml_node(item->source, pBinder, item_source_node);
2588 if (err != PROTOCOL_BINDER_OK)
2594 if (str_cmdID != NULL)
2597 *ppWbxml_dom_node = map_node;
2604 if (str_cmdID != NULL)
2607 FW_LOGE("error :%d", err);
2611 static ProtocolVersion __get_oma_ds_protocol_version(char *verdtd)
2613 ProtocolVersion protocol_version = VERSION_UNKNOWN;
2614 if (strcmp(verdtd, ELEMENT_VERDRD_12) == 0) {
2615 protocol_version = VERSION_12;
2616 } else if (strcmp(verdtd, ELEMENT_VERDRD_11) == 0) {
2617 protocol_version = VERSION_11;
2618 } else if (strcmp(verdtd, ELEMENT_VERDRD_10) == 0) {
2619 protocol_version = VERSION_10;
2622 return protocol_version;
2625 static DevInfVersion __get_oma_ds_devInf_version(char *verdtd)
2627 DevInfVersion devInf_version = DEVINF_VERSION_UNKNOWN;
2628 if (strcmp(verdtd, ELEMENT_VERDRD_12) == 0) {
2629 devInf_version = DEVINF_VERSION_12;
2630 } else if (strcmp(verdtd, ELEMENT_VERDRD_11) == 0) {
2631 devInf_version = DEVINF_VERSION_11;
2632 } else if (strcmp(verdtd, ELEMENT_VERDRD_10) == 0) {
2633 devInf_version = DEVINF_VERSION_10;
2636 return devInf_version;
2639 static DevInfDevTyp __get_oma_ds_devInf_device_type(char *devType)
2641 DevInfDevTyp device_type = DEVINF_DEVTYPE_UNKNOWN;
2642 if (strcmp(devType, ELEMENT_PAGER) == 0) {
2643 device_type = DEVINF_DEVTYPE_PAGER;
2644 } else if (strcmp(devType, ELEMENT_HANDHELD) == 0) {
2645 device_type = DEVINF_DEVTYPE_HANDHELD;
2646 } else if (strcmp(devType, ELEMENT_PDA) == 0) {
2647 device_type = DEVINF_DEVTYPE_PDA;
2648 } else if (strcmp(devType, ELEMENT_PHONE) == 0) {
2649 device_type = DEVINF_DEVTYPE_PHONE;
2650 } else if (strcmp(devType, ELEMENT_SMARTPHONE) == 0) {
2651 device_type = DEVINF_DEVTYPE_SMARTPHONE;
2652 } else if (strcmp(devType, ELEMENT_SERVER) == 0) {
2653 device_type = DEVINF_DEVTYPE_SERVER;
2654 } else if (strcmp(devType, ELEMENT_WORKSTATION) == 0) {
2655 device_type = DEVINF_DEVTYPE_WORKSTATION;
2661 static DevInfContentType *__get_devinf_contenttype(WBXMLTreeNode *node)
2665 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2666 DevInfContentType *pDevInfContentType = (DevInfContentType *)calloc(1, sizeof(DevInfContentType));
2667 if (pDevInfContentType == NULL) {
2668 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2669 FW_LOGE("pDevInfContentType is null");
2673 /* get first child */
2674 WBXMLTreeNode *child = node->children;
2675 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2677 const char *first_child_name = NULL;
2678 first_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2679 if (strcmp(first_child_name, ELEMENT_CTTYPE) == 0) {
2680 char *ctType = NULL;
2681 err = get_text_pointer_from_wbxml_node(child, &ctType);
2682 if (err != PROTOCOL_BINDER_OK) {
2686 pDevInfContentType->cttype = strdup(ctType);
2692 /* get second child */
2693 child = child->next;
2694 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2696 if (child != NULL) {
2697 const char *second_child_name = NULL;
2698 second_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2699 if (strcmp(second_child_name, ELEMENT_VERCT) == 0) {
2701 err = get_text_pointer_from_wbxml_node(child, &verCT);
2702 if (err != PROTOCOL_BINDER_OK) {
2706 pDevInfContentType->verct = strdup(verCT);
2714 return pDevInfContentType;
2717 FW_LOGE("error : %d", err);
2722 static Location *_get_location(WBXMLTreeNode *node)
2726 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2727 Location *pLocation = NULL;
2729 WBXMLTreeNode *child = NULL;
2731 char *locURI = NULL;
2732 char *locName = NULL;
2734 /* get first child : required LocURI */
2735 child = node->children;
2736 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2738 const char *first_child_name = NULL;
2739 first_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2740 FW_LOGV("child_name = %s", first_child_name);
2741 if (strcmp(first_child_name, ELEMENT_LOCURI) == 0) {
2742 err = get_text_pointer_from_wbxml_node(child, &locURI);
2743 if (err != PROTOCOL_BINDER_OK) {
2751 /* get second child : optional LocName */
2752 child = child->next;
2753 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2755 if (child != NULL) {
2756 const char *second_child_name = NULL;
2757 second_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2758 FW_LOGV("child_name = %s", second_child_name);
2759 if (strcmp(second_child_name, ELEMENT_LOCNAME) == 0) {
2760 err = get_text_pointer_from_wbxml_node(child, &locName);
2761 if (err != PROTOCOL_BINDER_OK) {
2770 create_location(locURI, locName, &pLocation);
2776 FW_LOGE("error : %d", err);
2777 free_location(pLocation);
2781 static Anchor *_get_anchor(WBXMLTreeNode *node)
2785 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2786 Anchor *pAnchor = NULL;
2788 WBXMLTreeNode *child = NULL;
2790 char *lastAnchor = NULL;
2791 char *nextAnchor = NULL;
2792 /* get first child : optional lastAnchor */
2793 child = node->children;
2794 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2796 const char *first_child_name = NULL;
2798 first_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2799 FW_LOGV("child_name = %s", first_child_name);
2800 if (strcmp(first_child_name, ELEMENT_LAST) == 0) {
2801 err = get_text_pointer_from_wbxml_node(child, &lastAnchor);
2802 if (err != PROTOCOL_BINDER_OK) {
2805 child = child->next;
2806 for (; child != NULL && child->type != WBXML_TREE_ELEMENT_NODE; child = child->next) {}
2807 } else if (strcmp(first_child_name, ELEMENT_NEXT) == 0) {
2808 err = get_text_pointer_from_wbxml_node(child, &nextAnchor);
2809 if (err != PROTOCOL_BINDER_OK) {
2815 /* get second child : required nextAnchor */
2816 if (child != NULL) {
2817 const char *second_child_name = NULL;
2818 second_child_name = (const char *)wbxml_tag_get_xml_name(child->name);
2819 FW_LOGV("child_name = %s", second_child_name);
2820 if (strcmp(second_child_name, ELEMENT_NEXT) == 0) {
2821 err = get_text_pointer_from_wbxml_node(child, &nextAnchor);
2822 if (err != PROTOCOL_BINDER_OK) {
2831 create_anchor(lastAnchor, nextAnchor, &pAnchor);
2837 FW_LOGE("error : %d", err);
2838 free_anchor(pAnchor);
2842 static Cred *__get_cred(WBXMLTreeNode *node)
2845 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2850 char *format = NULL;
2852 WBXMLTreeNode *child = NULL;
2854 for (child = node->children; child != NULL; child = child->next) {
2855 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
2857 const char *child_xml_name = NULL;
2858 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
2860 if (strcmp(child_xml_name, ELEMENT_META) == 0) {
2861 WBXMLTreeNode *grand_child = child->children;
2863 const char *grand_child_xml_name = NULL;
2864 grand_child_xml_name = (const char *)wbxml_tag_get_xml_name(grand_child->name);
2866 if (strcmp(grand_child_xml_name, ELEMENT_TYPE) == 0) {
2867 err = get_text_pointer_from_wbxml_node(grand_child, &type);
2868 if (err != PROTOCOL_BINDER_OK) {
2871 FW_LOGV("Type = [%s]" , type);
2872 } else if (strcmp(grand_child_xml_name, ELEMENT_FORMAT) == 0) {
2873 err = get_text_pointer_from_wbxml_node(grand_child, &format);
2874 if (err != PROTOCOL_BINDER_OK) {
2877 FW_LOGV("Type = [%s]" , format);
2879 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
2880 err = get_text_pointer_from_wbxml_node(child, &data);
2881 if (err != PROTOCOL_BINDER_OK) {
2884 FW_LOGV("Data = [%s]" , data);
2889 cred = create_cred_with_data(convert_auth_type(type), data);
2891 FormatType formatType = FORMAT_TYPE_UNKNOWN;
2892 if (strcmp(format, ELEMENT_B64) == 0)
2893 formatType = FORMAT_TYPE_BASE64;
2895 set_cred_format_type(cred, formatType);
2906 static Chal *_get_chal(WBXMLTreeNode *node)
2909 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2911 Chal *pChal = (Chal *)calloc(1, sizeof(Chal));
2912 if (pChal == NULL) {
2913 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2914 FW_LOGE("pChal is null");
2918 WBXMLTreeNode *chal_child = node->children;
2920 WBXMLTreeNode *meta_child = NULL;
2922 for (meta_child = chal_child->children; meta_child != NULL; meta_child = meta_child->next) {
2923 if (meta_child->type != WBXML_TREE_ELEMENT_NODE) continue;
2925 const char *meta_child_xml_name = NULL;
2926 meta_child_xml_name = (const char *)wbxml_tag_get_xml_name(meta_child->name);
2928 if (strcmp(meta_child_xml_name, ELEMENT_TYPE) == 0) {
2930 err = get_text_pointer_from_wbxml_node(meta_child, &type);
2931 if (err != PROTOCOL_BINDER_OK) {
2934 FW_LOGV("Type = [%s]" , type);
2936 pChal->type = convert_auth_type(type);
2937 } else if (strcmp(meta_child_xml_name, ELEMENT_FORMAT) == 0) {
2938 char *format = NULL;
2939 err = get_text_pointer_from_wbxml_node(meta_child, &format);
2940 if (err != PROTOCOL_BINDER_OK) {
2943 FW_LOGV("Format = [%s]" , format);
2945 pChal->format = convert_format_type(format);
2946 } else if (strcmp(meta_child_xml_name, ELEMENT_NEXTNONCE) == 0) {
2947 char *nextnonce = NULL;
2948 unsigned int nonce_len = 0;
2949 err = get_binary_pointer_from_wbxml_node(meta_child, &nextnonce, &nonce_len);
2950 if (err != PROTOCOL_BINDER_OK) {
2953 FW_LOGV("NextNonce = [%s]" , nextnonce);
2954 if (pChal->format == FORMAT_TYPE_BASE64) {
2955 if (nextnonce != NULL)
2956 pChal->nonce_b64 = strdup(nextnonce);
2958 pChal->nonce_plain = (char *) malloc(nonce_len+1);
2959 if (pChal->nonce_plain == NULL) {
2960 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2963 memcpy(pChal->nonce_plain, nextnonce, nonce_len);
2964 pChal->nonce_plain[nonce_len] = '\0';
2967 pChal->nonce_length = nonce_len;
2980 static PROTOCOL_BINDER_ERROR __oma_ds_binder_devinf_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
2981 WBXMLTreeNode *wbxml_dom_node,
2982 Content_Ptr *pContent)
2985 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
2987 /* get data from dom tree */
2988 DevInf *pDevInf = (DevInf *)calloc(1, sizeof(DevInf));
2989 if (pDevInf == NULL) {
2990 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
2991 FW_LOGE("pDevInf is null");
2995 WBXMLTreeNode *child = NULL;
2997 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
2998 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3000 const char *child_xml_name = NULL;
3001 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3003 if (strcmp(child_xml_name, ELEMENT_VERDTD) == 0) {
3004 char *verdtd = NULL;
3005 err = get_text_pointer_from_wbxml_node(child, &verdtd);
3006 if (err != PROTOCOL_BINDER_OK) {
3009 FW_LOGV("VerDTD = [%s]" , verdtd);
3011 pDevInf->version = __get_oma_ds_devInf_version(verdtd);
3012 } else if (strcmp(child_xml_name, ELEMENT_MAN) == 0) {
3014 err = get_text_pointer_from_wbxml_node(child, &man);
3015 if (err != PROTOCOL_BINDER_OK) {
3018 FW_LOGV("Man = [%s]" , man);
3020 pDevInf->manufacturer = strdup(man);
3021 } else if (strcmp(child_xml_name, ELEMENT_MOD) == 0) {
3023 err = get_text_pointer_from_wbxml_node(child, &mod);
3024 if (err != PROTOCOL_BINDER_OK) {
3027 FW_LOGV("Mod = [%s]" , mod);
3029 pDevInf->model = strdup(mod);
3030 } else if (strcmp(child_xml_name, ELEMENT_OEM) == 0) {
3032 err = get_text_pointer_from_wbxml_node(child, &oem);
3033 if (err != PROTOCOL_BINDER_OK) {
3036 FW_LOGV("OEM = [%s]" , oem);
3038 pDevInf->oem = strdup(oem);
3039 } else if (strcmp(child_xml_name, ELEMENT_FWV) == 0) {
3041 err = get_text_pointer_from_wbxml_node(child, &fwv);
3042 if (err != PROTOCOL_BINDER_OK) {
3045 FW_LOGV("FwV = [%s]" , fwv);
3047 pDevInf->firmwareVersion = strdup(fwv);
3048 } else if (strcmp(child_xml_name, ELEMENT_SWV) == 0) {
3050 err = get_text_pointer_from_wbxml_node(child, &swv);
3051 if (err != PROTOCOL_BINDER_OK) {
3054 FW_LOGV("SwV = [%s]" , swv);
3056 pDevInf->softwareVersion = strdup(swv);
3057 } else if (strcmp(child_xml_name, ELEMENT_HWV) == 0) {
3059 err = get_text_pointer_from_wbxml_node(child, &hwv);
3060 if (err != PROTOCOL_BINDER_OK) {
3063 FW_LOGV("HwV = [%s]" , hwv);
3065 pDevInf->hardwareVersion = strdup(hwv);
3066 } else if (strcmp(child_xml_name, ELEMENT_DEVID) == 0) {
3068 err = get_text_pointer_from_wbxml_node(child, &devID);
3069 if (err != PROTOCOL_BINDER_OK) {
3072 FW_LOGV("DevID = [%s]" , devID);
3074 pDevInf->devid = strdup(devID);
3075 } else if (strcmp(child_xml_name, ELEMENT_DEVTYP) == 0) {
3076 char *devtyp = NULL;
3077 err = get_text_pointer_from_wbxml_node(child, &devtyp);
3078 if (err != PROTOCOL_BINDER_OK) {
3081 FW_LOGV("DevTyp = [%s]" , devtyp);
3083 pDevInf->devtyp = __get_oma_ds_devInf_device_type(devtyp);
3084 } else if (strcmp(child_xml_name, ELEMENT_UTC) == 0) {
3086 pDevInf->supportsUTC = 1;
3087 } else if (strcmp(child_xml_name, ELEMENT_SUPPORTLARGEOBJS) == 0) {
3088 FW_LOGV("SupportLargeObjs");
3089 pDevInf->supportsLargeObjs = 1;
3090 } else if (strcmp(child_xml_name, ELEMENT_SUPPORTNUMBEROFCHANGES) == 0) {
3091 FW_LOGV("SupportNumberOfChanges");
3092 pDevInf->supportsNumberOfChanges = 1;
3093 } else if (strcmp(child_xml_name, ELEMENT_DATASTORE) == 0) {
3095 DevInfDataStore *pDevInfDataStore = (DevInfDataStore *)calloc(1, sizeof(DevInfDataStore));
3097 WBXMLTreeNode *datastore_child = NULL;
3099 for (datastore_child = child->children; datastore_child != NULL; datastore_child = datastore_child->next) {
3100 if (datastore_child->type != WBXML_TREE_ELEMENT_NODE) continue;
3102 const char *datastore_child_xml_name = NULL;
3103 datastore_child_xml_name = (const char *)wbxml_tag_get_xml_name(datastore_child->name);
3105 if (strcmp(datastore_child_xml_name, ELEMENT_SOURCEREF) == 0) {
3106 char *sourceref = NULL;
3107 err = get_text_pointer_from_wbxml_node(datastore_child, &sourceref);
3108 if (err != PROTOCOL_BINDER_OK) {
3111 FW_LOGV("SourceRef = [%s]" , sourceref);
3112 if (sourceref != NULL)
3113 pDevInfDataStore->sourceref = strdup(sourceref);
3114 } else if (strcmp(datastore_child_xml_name, ELEMENT_DISPLAYNAME) == 0) {
3115 char *displayname = NULL;
3116 err = get_text_pointer_from_wbxml_node(datastore_child, &displayname);
3117 if (err != PROTOCOL_BINDER_OK) {
3120 FW_LOGV("DisplayName = [%s]" , displayname);
3121 if (displayname != NULL)
3122 pDevInfDataStore->displayname = strdup(displayname);
3123 } else if (strcmp(datastore_child_xml_name, ELEMENT_MAXGUIDSIZE) == 0) {
3124 char *maxguidsize = NULL;
3125 err = get_text_pointer_from_wbxml_node(datastore_child, &maxguidsize);
3126 if (err != PROTOCOL_BINDER_OK) {
3129 FW_LOGV("MaxGUIDSize = [%s]" , maxguidsize);
3130 if (maxguidsize != NULL)
3131 pDevInfDataStore->maxGUIDSize = atoi(maxguidsize);
3132 } else if (strcmp(datastore_child_xml_name, ELEMENT_RX_PREF) == 0) {
3133 DevInfContentType *pDevInfContentType = __get_devinf_contenttype(datastore_child);
3134 if (pDevInfContentType == NULL) {
3135 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3138 pDevInfDataStore->rxPref = pDevInfContentType;
3139 } else if (strcmp(datastore_child_xml_name, ELEMENT_RX) == 0) {
3140 DevInfContentType *pDevInfContentType = __get_devinf_contenttype(datastore_child);
3141 if (pDevInfContentType == NULL) {
3142 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3145 pDevInfDataStore->rx = g_list_append(pDevInfDataStore->rx, pDevInfContentType);
3146 } else if (strcmp(datastore_child_xml_name, ELEMENT_TX_PREF) == 0) {
3147 DevInfContentType *pDevInfContentType = __get_devinf_contenttype(datastore_child);
3148 if (pDevInfContentType == NULL) {
3149 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3152 pDevInfDataStore->txPref = pDevInfContentType;
3153 } else if (strcmp(datastore_child_xml_name, ELEMENT_TX) == 0) {
3154 DevInfContentType *pDevInfContentType = __get_devinf_contenttype(datastore_child);
3155 if (pDevInfContentType == NULL) {
3156 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3159 pDevInfDataStore->tx = g_list_append(pDevInfDataStore->tx, pDevInfContentType);
3160 } else if (strcmp(datastore_child_xml_name, ELEMENT_CTCAP) == 0) {
3162 DevInfCTCap *pDevInfCtCap = (DevInfCTCap *)calloc(1, sizeof(DevInfCTCap));
3164 DevInfContentType *pDevInfContentType = NULL;
3165 WBXMLTreeNode *ctcap_child = NULL;
3167 for (ctcap_child = datastore_child->children; ctcap_child != NULL; ctcap_child = ctcap_child->next) {
3168 if (ctcap_child->type != WBXML_TREE_ELEMENT_NODE) continue;
3170 const char *ctcap_child_xml_name = NULL;
3171 ctcap_child_xml_name = (const char *)wbxml_tag_get_xml_name(ctcap_child->name);
3173 if (strcmp(ctcap_child_xml_name, ELEMENT_CTTYPE) == 0) {
3174 if (pDevInfContentType == NULL)
3175 pDevInfContentType = (DevInfContentType *)calloc(1, sizeof(DevInfContentType));
3177 char *cttype = NULL;
3178 err = get_text_pointer_from_wbxml_node(ctcap_child, &cttype);
3179 if (err != PROTOCOL_BINDER_OK) {
3182 FW_LOGV("CTType = [%s]" , cttype);
3184 pDevInfContentType->cttype = strdup(cttype);
3185 } else if (strcmp(ctcap_child_xml_name, ELEMENT_VERCT) == 0) {
3186 if (pDevInfContentType == NULL)
3187 pDevInfContentType = (DevInfContentType *)calloc(1, sizeof(DevInfContentType));
3190 err = get_text_pointer_from_wbxml_node(ctcap_child, &verct);
3191 if (err != PROTOCOL_BINDER_OK) {
3194 FW_LOGV("VerCT = [%s]" , verct);
3196 pDevInfContentType->verct = strdup(verct);
3197 } else if (strcmp(ctcap_child_xml_name, ELEMENT_FIELDLEVEL) == 0) {
3200 } else if (strcmp(ctcap_child_xml_name, ELEMENT_PROPERTY) == 0) {
3202 DevInfProperty *pDevInfProperty = (DevInfProperty *)calloc(1, sizeof(DevInfProperty));
3204 WBXMLTreeNode *property_child = NULL;
3205 for (property_child = ctcap_child->children; property_child != NULL; property_child = property_child->next) {
3206 if (property_child->type != WBXML_TREE_ELEMENT_NODE) continue;
3208 const char *property_child_xml_name = NULL;
3209 property_child_xml_name = (const char *)wbxml_tag_get_xml_name(property_child->name);
3211 if (strcmp(property_child_xml_name, ELEMENT_PROPNAME) == 0) {
3212 char *propname = NULL;
3213 err = get_text_pointer_from_wbxml_node(property_child, &propname);
3214 if (err != PROTOCOL_BINDER_OK) {
3217 FW_LOGV("PropName = [%s]" , propname);
3218 if (propname != NULL)
3219 pDevInfProperty->propName = strdup(propname);
3220 } else if (strcmp(property_child_xml_name, ELEMENT_DATATYPE) == 0) {
3221 char *datatype = NULL;
3222 err = get_text_pointer_from_wbxml_node(property_child, &datatype);
3223 if (err != PROTOCOL_BINDER_OK) {
3226 FW_LOGV("DataType = [%s]" , datatype);
3227 if (datatype != NULL)
3228 pDevInfProperty->dataType = strdup(datatype);
3229 } else if (strcmp(property_child_xml_name, ELEMENT_MAXOCCUR) == 0) {
3230 char *maxoccur = NULL;
3231 err = get_text_pointer_from_wbxml_node(property_child, &maxoccur);
3232 if (err != PROTOCOL_BINDER_OK) {
3235 FW_LOGV("MaxOccur = [%s]" , maxoccur);
3236 if (maxoccur != NULL)
3237 pDevInfProperty->maxOccur = atoi(maxoccur);
3238 } else if (strcmp(property_child_xml_name, ELEMENT_MAXSIZE) == 0) {
3239 char *maxsize = NULL;
3240 err = get_text_pointer_from_wbxml_node(property_child, &maxsize);
3241 if (err != PROTOCOL_BINDER_OK) {
3244 FW_LOGV("MaxSize = [%s]" , maxsize);
3245 if (maxsize != NULL)
3246 pDevInfProperty->maxSize = atoi(maxsize);
3247 } else if (strcmp(property_child_xml_name, ELEMENT_NOTRUNCATE) == 0) {
3248 FW_LOGV("NoTruncate");
3249 pDevInfProperty->noTruncate = 1;
3250 } else if (strcmp(property_child_xml_name, ELEMENT_VALENUM) == 0) {
3251 char *valenum = NULL;
3252 err = get_text_pointer_from_wbxml_node(property_child, &valenum);
3253 if (err != PROTOCOL_BINDER_OK) {
3256 FW_LOGV("ValEnum = [%s]" , valenum);
3257 pDevInfProperty->valEnums = g_list_append(pDevInfProperty->valEnums, strdup(valenum));
3258 } else if (strcmp(property_child_xml_name, ELEMENT_DISPLAYNAME) == 0) {
3259 char *displayname = NULL;
3260 err = get_text_pointer_from_wbxml_node(property_child, &displayname);
3261 if (err != PROTOCOL_BINDER_OK) {
3264 FW_LOGV("DisplayName = [%s]" , displayname);
3265 if (displayname != NULL)
3266 pDevInfProperty->displayName = strdup(displayname);
3267 } else if (strcmp(property_child_xml_name, ELEMENT_PROPPARAM) == 0) {
3269 DevInfPropParam *pDevInfPropParam = (DevInfPropParam *)calloc(1, sizeof(DevInfPropParam));
3271 WBXMLTreeNode *propparam_child = NULL;
3273 for (propparam_child = property_child->children; propparam_child != NULL; propparam_child = propparam_child->next) {
3274 if (propparam_child->type != WBXML_TREE_ELEMENT_NODE) continue;
3276 const char *propparam_child_xml_name = NULL;
3277 propparam_child_xml_name = (const char *)wbxml_tag_get_xml_name(propparam_child->name);
3279 if (strcmp(propparam_child_xml_name, ELEMENT_PARAMNAME) == 0) {
3280 char *paramname = NULL;
3281 err = get_text_pointer_from_wbxml_node(propparam_child, ¶mname);
3282 if (err != PROTOCOL_BINDER_OK) {
3285 FW_LOGV("ParamName = [%s]" , paramname);
3286 if (paramname != NULL)
3287 pDevInfPropParam->paramName = strdup(paramname);
3288 } else if (strcmp(propparam_child_xml_name, ELEMENT_DATATYPE) == 0) {
3289 char *datatype = NULL;
3290 err = get_text_pointer_from_wbxml_node(propparam_child, &datatype);
3291 if (err != PROTOCOL_BINDER_OK) {
3294 FW_LOGV("DataType = [%s]" , datatype);
3295 if (datatype != NULL)
3296 pDevInfPropParam->dataType = strdup(datatype);
3297 } else if (strcmp(propparam_child_xml_name, ELEMENT_VALENUM) == 0) {
3298 char *valenum = NULL;
3299 err = get_text_pointer_from_wbxml_node(propparam_child, &valenum);
3300 if (err != PROTOCOL_BINDER_OK) {
3303 FW_LOGV("ValEnum = [%s]" , valenum);
3304 if (valenum != NULL)
3305 pDevInfPropParam->valEnums = g_list_append(pDevInfPropParam->valEnums, strdup(valenum));
3306 } else if (strcmp(propparam_child_xml_name, ELEMENT_DISPLAYNAME) == 0) {
3307 char *displayname = NULL;
3308 err = get_text_pointer_from_wbxml_node(propparam_child, &displayname);
3309 if (err != PROTOCOL_BINDER_OK) {
3312 FW_LOGV("DisplayName = [%s]" , displayname);
3313 if (displayname != NULL)
3314 pDevInfPropParam->displayName = strdup(displayname);
3318 pDevInfProperty->propParams = g_list_append(pDevInfProperty->propParams, pDevInfPropParam);
3322 pDevInfCtCap->properties = g_list_append(pDevInfCtCap->properties, pDevInfProperty);
3325 pDevInfCtCap->ct = pDevInfContentType;
3326 pDevInfDataStore->ctcaps = g_list_append(pDevInfDataStore->ctcaps, pDevInfCtCap);
3327 } else if (strcmp(datastore_child_xml_name, ELEMENT_DSMEM) == 0) {
3330 } else if (strcmp(datastore_child_xml_name, ELEMENT_SUPPORTHIERARCHICALSYNC) == 0) {
3331 FW_LOGV("SupportHierarchicalSync");
3332 pDevInfDataStore->supportsHierarchicalSync = 1;
3333 } else if (strcmp(datastore_child_xml_name, ELEMENT_SYNCCAP) == 0) {
3335 WBXMLTreeNode *synccap_child = NULL;
3337 for (synccap_child = datastore_child->children; synccap_child != NULL; synccap_child = synccap_child->next) {
3338 if (synccap_child->type != WBXML_TREE_ELEMENT_NODE) continue;
3340 const char *synccap_child_xml_name = NULL;
3341 synccap_child_xml_name = (const char *)wbxml_tag_get_xml_name(synccap_child->name);
3343 if (strcmp(synccap_child_xml_name, ELEMENT_SYNCTYPE) == 0) {
3344 char *synctype_str = NULL;
3345 unsigned int synctype = 0;
3346 err = get_text_pointer_from_wbxml_node(synccap_child, &synctype_str);
3347 if (err != PROTOCOL_BINDER_OK) {
3350 FW_LOGV("SyncType = [%s]" , synctype_str);
3351 if (synctype_str != NULL) {
3352 synctype = atoi(synctype_str);
3353 synctype = 1 << (synctype - 1);
3355 /*DevInfSyncCap synccap = convert_devinf_synccap(synctype);*/
3356 set_devInf_datastore_synccap(pDevInfDataStore, synctype, 1);
3359 } else if (strcmp(datastore_child_xml_name, ELEMENT_FILTER_RX) == 0) {
3361 } else if (strcmp(datastore_child_xml_name, ELEMENT_FILTERCAP) == 0) {
3365 pDevInf->datastores = g_list_append(pDevInf->datastores, pDevInfDataStore);
3371 if (err == PROTOCOL_BINDER_OK) {
3373 *pContent = pDevInf;
3376 free_devinf(pDevInf);
3381 static PROTOCOL_BINDER_ERROR __oma_ds_binder_header_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3382 WBXMLTreeNode *wbxml_dom_node,
3383 Content_Ptr *pContent)
3386 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3388 /* get data from dom tree */
3389 SyncHdr *pSyncHdr = (SyncHdr *)calloc(1, sizeof(SyncHdr));
3390 if (pSyncHdr == NULL) {
3391 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3392 FW_LOGE("pSyncHdr is null");
3396 WBXMLTreeNode *child = NULL;
3398 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
3399 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3401 const char *child_xml_name = NULL;
3402 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3404 if (strcmp(child_xml_name, ELEMENT_VERDTD) == 0) {
3405 char *verdtd = NULL;
3406 err = get_text_pointer_from_wbxml_node(child, &verdtd);
3407 if (err != PROTOCOL_BINDER_OK) {
3410 FW_LOGV("VerDTD = [%s]" , verdtd);
3412 pSyncHdr->version = __get_oma_ds_protocol_version(verdtd);
3413 } else if (strcmp(child_xml_name, ELEMENT_SESSIONID) == 0) {
3414 char *sessionID = NULL;
3415 err = get_text_pointer_from_wbxml_node(child, &sessionID);
3416 if (err != PROTOCOL_BINDER_OK) {
3419 FW_LOGV("SessionID = [%s]" , sessionID);
3422 pSyncHdr->sessionID = strdup(sessionID);
3424 pSyncHdr->sessionID = NULL;
3425 } else if (strcmp(child_xml_name, ELEMENT_MSGID) == 0) {
3427 err = get_text_pointer_from_wbxml_node(child, &msgID);
3428 if (err != PROTOCOL_BINDER_OK) {
3431 FW_LOGV("MsgID = [%s]" , msgID);
3433 pSyncHdr->messageID = atoi(msgID);
3434 } else if (strcmp(child_xml_name, ELEMENT_TARGET) == 0) {
3435 Location *pTargetLocation = _get_location(child);
3436 if (pTargetLocation == NULL) {
3437 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3440 pSyncHdr->target = pTargetLocation;
3441 } else if (strcmp(child_xml_name, ELEMENT_SOURCE) == 0) {
3442 Location *pSourceLocation = _get_location(child);
3443 if (pSourceLocation == NULL) {
3444 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3447 pSyncHdr->source = pSourceLocation;
3448 } else if (strcmp(child_xml_name, ELEMENT_RESPURI) == 0) {
3449 char *resp_uri = NULL;
3450 err = get_text_pointer_from_wbxml_node(child, &resp_uri);
3451 if (err != PROTOCOL_BINDER_OK) {
3454 FW_LOGV("resp_uri = [%s]" , resp_uri);
3455 if (resp_uri != NULL)
3456 pSyncHdr->responseURI = strdup(resp_uri);
3457 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
3458 FW_LOGV("noResp\n");
3459 pSyncHdr->noResponse = 1;
3460 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
3463 pCred = __get_cred(child);
3464 if (pCred == NULL) {
3465 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3468 pSyncHdr->cred = pCred;
3469 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
3475 if (err == PROTOCOL_BINDER_OK) {
3477 *pContent = pSyncHdr;
3480 free_synchdr(pSyncHdr);
3486 static PROTOCOL_BINDER_ERROR __oma_ds_binder_results_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3487 WBXMLTreeNode *wbxml_dom_node,
3488 Content_Ptr *pContent)
3491 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3493 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
3495 /* get data from dom tree */
3496 Command *pResults = (Command *)calloc(1, sizeof(Command));
3497 if (pResults == NULL) {
3498 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3499 FW_LOGE("pResults is null");
3503 pResults->type = COMMAND_TYPE_RESULTS;
3504 pResults->msgID = pSyncHdr->messageID;
3505 pResults->refCount = 1;
3507 WBXMLTreeNode *child = NULL;
3509 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
3510 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3512 const char *child_xml_name = NULL;
3513 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3515 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
3516 char *cmd_id = NULL;
3517 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
3518 if (err != PROTOCOL_BINDER_OK) {
3521 FW_LOGV("CmdID = [%s]" , cmd_id);
3523 pResults->cmdID = atoi(cmd_id);
3524 } else if (strcmp(child_xml_name, ELEMENT_MSGREF) == 0) {
3525 char *msg_ref = NULL;
3526 err = get_text_pointer_from_wbxml_node(child, &msg_ref);
3527 if (err != PROTOCOL_BINDER_OK) {
3530 FW_LOGV("MsgRef = [%s]" , msg_ref);
3531 if (msg_ref != NULL)
3532 pResults->private.results.msgRef = atoi(msg_ref);
3533 } else if (strcmp(child_xml_name, ELEMENT_CMDREF) == 0) {
3534 char *cmd_ref = NULL;
3535 err = get_text_pointer_from_wbxml_node(child, &cmd_ref);
3536 if (err != PROTOCOL_BINDER_OK) {
3539 FW_LOGV("MsgRef = [%s]" , cmd_ref);
3540 if (cmd_ref != NULL)
3541 pResults->private.results.cmdRef = atoi(cmd_ref);
3542 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
3544 WBXMLTreeNode *grandchild = NULL;
3547 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3548 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3550 const char *grandchild_xml_name = NULL;
3551 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3553 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
3554 char *contentType = NULL;
3555 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
3556 if (err != PROTOCOL_BINDER_OK) {
3559 FW_LOGV("Content Type = [%s]" , contentType);
3560 if (contentType != NULL)
3561 pResults->private.results.type = strdup(contentType);
3564 } else if (strcmp(child_xml_name, ELEMENT_TARGETREF) == 0) {
3566 } else if (strcmp(child_xml_name, ELEMENT_SOURCEREF) == 0) {
3568 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
3569 /*create item in results command */
3570 Item *item = create_item();
3572 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3575 pResults->private.results.item = item;
3577 WBXMLTreeNode *grandchild = NULL;
3579 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3580 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3582 const char *grandchild_xml_name = NULL;
3583 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3585 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
3586 Location *pSourceLocation = _get_location(grandchild);
3587 if (pSourceLocation == NULL) {
3588 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3591 pResults->private.results.item->source = pSourceLocation;
3592 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
3593 Location *pTargetLocation = _get_location(grandchild);
3594 if (pTargetLocation == NULL) {
3595 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3598 pResults->private.results.item->target = pTargetLocation;
3599 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
3606 if (err == PROTOCOL_BINDER_OK) {
3608 *pContent = pResults;
3611 free_command(pResults);
3616 static PROTOCOL_BINDER_ERROR __oma_ds_binder_put_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3617 WBXMLTreeNode *wbxml_dom_node,
3618 Content_Ptr *pContent)
3621 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3623 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
3625 /* get data from dom tree */
3626 Command *pPut = (Command *)calloc(1, sizeof(Command));
3628 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3629 FW_LOGE("pPut is null");
3633 pPut->type = COMMAND_TYPE_PUT;
3634 pPut->msgID = pSyncHdr->messageID;
3637 WBXMLTreeNode *child = NULL;
3639 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
3640 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3642 const char *child_xml_name = NULL;
3643 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3645 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
3646 char *cmd_id = NULL;
3647 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
3648 if (err != PROTOCOL_BINDER_OK) {
3651 FW_LOGV("CmdID = [%s]" , cmd_id);
3653 pPut->cmdID = atoi(cmd_id);
3654 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
3657 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
3660 pCred = __get_cred(child);
3661 if (pCred == NULL) {
3662 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3666 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
3667 WBXMLTreeNode *grandchild = NULL;
3670 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3671 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3673 const char *grandchild_xml_name = NULL;
3674 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3676 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
3677 char *contentType = NULL;
3678 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
3679 if (err != PROTOCOL_BINDER_OK) {
3682 FW_LOGV("Content Type = [%s]" , contentType);
3683 if (contentType != NULL)
3684 pPut->private.access.type = strdup(contentType);
3687 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
3688 /*create item in put command */
3689 Item *item = create_item();
3691 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3694 pPut->private.access.item = item;
3696 WBXMLTreeNode *grandchild = NULL;
3698 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3699 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3701 const char *grandchild_xml_name = NULL;
3702 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3704 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
3705 Location *pSourceLocation = _get_location(grandchild);
3706 if (pSourceLocation == NULL) {
3707 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3710 pPut->private.access.item->source = pSourceLocation;
3711 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
3712 Location *pTargetLocation = _get_location(grandchild);
3713 if (pTargetLocation == NULL) {
3714 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3717 pPut->private.access.item->target = pTargetLocation;
3718 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
3726 if (err == PROTOCOL_BINDER_OK) {
3736 static PROTOCOL_BINDER_ERROR __oma_ds_binder_get_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3737 WBXMLTreeNode *wbxml_dom_node,
3738 Content_Ptr *pContent)
3741 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3743 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
3745 /* get data from dom tree */
3746 Command *pGet = (Command *)calloc(1, sizeof(Command));
3748 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3749 FW_LOGE("pGet is null");
3753 pGet->type = COMMAND_TYPE_GET;
3754 pGet->msgID = pSyncHdr->messageID;
3757 WBXMLTreeNode *child = NULL;
3759 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
3760 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3762 const char *child_xml_name = NULL;
3763 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3765 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
3766 char *cmd_id = NULL;
3767 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
3768 if (err != PROTOCOL_BINDER_OK) {
3771 FW_LOGV("CmdID = [%s]" , cmd_id);
3773 pGet->cmdID = atoi(cmd_id);
3774 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
3777 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
3780 pCred = __get_cred(child);
3781 if (pCred == NULL) {
3782 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3786 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
3788 WBXMLTreeNode *grandchild = NULL;
3790 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3791 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3793 const char *grandchild_xml_name = NULL;
3794 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3796 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
3797 char *contentType = NULL;
3798 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
3799 if (err != PROTOCOL_BINDER_OK) {
3802 FW_LOGV("Content Type = [%s]" , contentType);
3803 if (contentType != NULL)
3804 pGet->private.access.type = strdup(contentType);
3807 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
3808 /*create item in put command */
3809 Item *item = create_item();
3811 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3814 pGet->private.access.item = item;
3816 WBXMLTreeNode *grandchild = NULL;
3817 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3818 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3820 const char *grandchild_xml_name = NULL;
3821 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3823 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
3824 Location *pSourceLocation = _get_location(grandchild);
3825 if (pSourceLocation == NULL) {
3826 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3829 pGet->private.access.item->source = pSourceLocation;
3830 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
3831 Location *pTargetLocation = _get_location(grandchild);
3832 if (pTargetLocation == NULL) {
3833 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3836 pGet->private.access.item->target = pTargetLocation;
3837 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
3845 if (err == PROTOCOL_BINDER_OK) {
3856 static PROTOCOL_BINDER_ERROR __oma_ds_binder_alert_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3857 WBXMLTreeNode *wbxml_dom_node,
3858 Content_Ptr *pContent)
3861 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3863 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
3865 /* get data from dom tree */
3866 Command *pAlert = (Command *)calloc(1, sizeof(Command));
3867 if (pAlert == NULL) {
3868 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3869 FW_LOGE("pAlert is null");
3873 pAlert->type = COMMAND_TYPE_ALERT;
3874 pAlert->msgID = pSyncHdr->messageID;
3875 pAlert->refCount = 1;
3877 WBXMLTreeNode *child = NULL;
3879 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
3880 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
3882 const char *child_xml_name = NULL;
3883 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
3885 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
3886 char *cmd_id = NULL;
3887 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
3888 if (err != PROTOCOL_BINDER_OK) {
3891 FW_LOGV("CmdID = [%s]" , cmd_id);
3893 pAlert->cmdID = atoi(cmd_id);
3894 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
3897 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
3900 pCred = __get_cred(child);
3901 if (pCred == NULL) {
3902 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3905 pAlert->cred = pCred;
3906 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
3908 err = get_text_pointer_from_wbxml_node(child, &data);
3909 if (err != PROTOCOL_BINDER_OK) {
3912 FW_LOGV("Data = [%s]" , data);
3914 pAlert->private.alert.type = atoi(data);
3915 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
3916 WBXMLTreeNode *grandchild = NULL;
3918 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
3919 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3921 const char *grandchild_xml_name = NULL;
3922 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
3924 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
3925 Location *pSourceLocation = _get_location(grandchild);
3926 if (pSourceLocation == NULL) {
3927 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3930 pAlert->source = pSourceLocation;
3931 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
3932 Location *pTargetLocation = _get_location(grandchild);
3933 if (pTargetLocation == NULL) {
3934 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3937 pAlert->target = pTargetLocation;
3938 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
3940 WBXMLTreeNode *grandgrandchild = NULL;
3941 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
3942 if (grandgrandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
3944 const char *grandgrandchild_xml_name = NULL;
3945 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
3947 if (strcmp(grandgrandchild_xml_name, ELEMENT_ANCHOR) == 0) {
3948 Anchor *pAnchor = _get_anchor(grandgrandchild);
3949 if (pAnchor == NULL) {
3950 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3953 pAlert->private.alert.anchor = pAnchor;
3954 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_MAXOBJSIZE) == 0) {
3955 char *maxObjSize = NULL;
3956 err = get_text_pointer_from_wbxml_node(grandgrandchild, &maxObjSize);
3957 if (err != PROTOCOL_BINDER_OK) {
3960 FW_LOGV("MaxObjSize = [%s]" , maxObjSize);
3961 if (maxObjSize != NULL)
3962 pAlert->private.alert.maxObjSize = atoi(maxObjSize);
3971 if (err == PROTOCOL_BINDER_OK) {
3976 free_command(pAlert);
3981 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_end_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
3982 WBXMLTreeNode *wbxml_dom_node,
3983 Content_Ptr *pContent)
3986 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
3988 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
3990 /* get data from dom tree */
3991 Command *pSyncEnd = (Command *)calloc(1, sizeof(Command));
3992 if (pSyncEnd == NULL) {
3993 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
3994 FW_LOGE("pSyncEnd is null");
3998 pSyncEnd->type = COMMAND_TYPE_SYNC_END;;
3999 pSyncEnd->msgID = pSyncHdr->messageID;
4000 pSyncEnd->refCount = 1;
4003 if (err == PROTOCOL_BINDER_OK) {
4005 *pContent = pSyncEnd;
4008 free_command(pSyncEnd);
4015 static PROTOCOL_BINDER_ERROR __oma_ds_binder_sync_start_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4016 WBXMLTreeNode *wbxml_dom_node,
4017 Content_Ptr *pContent)
4020 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4022 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
4024 /* get data from dom tree */
4025 Command *pSync = (Command *)calloc(1, sizeof(Command));
4026 if (pSync == NULL) {
4027 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4028 FW_LOGE("pSync is null");
4032 pSync->type = COMMAND_TYPE_SYNC_START;;
4033 pSync->msgID = pSyncHdr->messageID;
4034 pSync->refCount = 1;
4036 WBXMLTreeNode *child = NULL;
4038 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
4039 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
4041 const char *child_xml_name = NULL;
4042 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
4044 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
4045 char *cmd_id = NULL;
4046 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
4047 if (err != PROTOCOL_BINDER_OK) {
4050 FW_LOGV("CmdID = [%s]" , cmd_id);
4052 pSync->cmdID = atoi(cmd_id);
4053 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
4056 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
4059 pCred = __get_cred(child);
4060 if (pCred == NULL) {
4061 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4064 pSync->cred = pCred;
4065 } else if (strcmp(child_xml_name, ELEMENT_TARGET) == 0) {
4066 Location *pTargetLocation = _get_location(child);
4067 if (pTargetLocation == NULL) {
4068 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4071 pSync->target = pTargetLocation;
4072 } else if (strcmp(child_xml_name, ELEMENT_SOURCE) == 0) {
4073 Location *pSourceLocation = _get_location(child);
4074 if (pSourceLocation == NULL) {
4075 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4078 pSync->source = pSourceLocation;
4079 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
4081 } else if (strcmp(child_xml_name, ELEMENT_NUMBEROFCHANGES) == 0) {
4082 char *numOfChanges = NULL;
4083 err = get_text_pointer_from_wbxml_node(child, &numOfChanges);
4084 if (err != PROTOCOL_BINDER_OK) {
4087 FW_LOGV("NumberOfChanges = [%s]" , numOfChanges);
4089 pSync->private.sync.hasNumChanged = 1;
4090 if (numOfChanges != NULL)
4091 pSync->private.sync.numChanged = atoi(numOfChanges);
4096 if (err == PROTOCOL_BINDER_OK) {
4101 free_command(pSync);
4106 static PROTOCOL_BINDER_ERROR __oma_ds_binder_add_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4107 WBXMLTreeNode *wbxml_dom_node,
4108 Content_Ptr *pContent)
4111 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4113 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
4115 /* get data from dom tree */
4116 Command *pAdd = (Command *)calloc(1, sizeof(Command));
4118 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4119 FW_LOGE("pAdd is null");
4123 pAdd->type = COMMAND_TYPE_ADD;;
4124 pAdd->msgID = pSyncHdr->messageID;
4125 pAdd->private.change.type = CHANGE_ADD;
4130 WBXMLTreeNode *child = NULL;
4132 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
4133 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
4135 const char *child_xml_name = NULL;
4136 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
4138 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
4139 char *cmd_id = NULL;
4140 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
4141 if (err != PROTOCOL_BINDER_OK) {
4144 FW_LOGV("CmdID = [%s]" , cmd_id);
4146 pAdd->cmdID = atoi(cmd_id);
4147 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
4150 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
4153 pCred = __get_cred(child);
4154 if (pCred == NULL) {
4155 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4159 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
4160 WBXMLTreeNode *grandchild = NULL;
4163 item = create_item();
4165 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4169 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4170 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4172 const char *grandchild_xml_name = NULL;
4173 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4175 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
4176 char *contentType = NULL;
4177 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
4178 if (err != PROTOCOL_BINDER_OK) {
4181 FW_LOGV("Content Type = [%s]" , contentType);
4182 if (contentType != NULL)
4183 item->contenttype = strdup(contentType);
4184 } else if (strcmp(grandchild_xml_name, ELEMENT_SIZE) == 0) {
4186 err = get_text_pointer_from_wbxml_node(grandchild, &size);
4187 if (err != PROTOCOL_BINDER_OK) {
4190 FW_LOGV("Size = [%s]" , size);
4192 item->size = atoi(size);
4195 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
4198 item = create_item();
4200 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4205 WBXMLTreeNode *grandchild = NULL;
4206 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4207 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4209 const char *grandchild_xml_name = NULL;
4210 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4212 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
4213 Location *pSourceLocation = _get_location(grandchild);
4214 if (pSourceLocation == NULL) {
4215 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4218 item->source = pSourceLocation;
4219 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
4220 Location *pTargetLocation = _get_location(grandchild);
4221 if (pTargetLocation == NULL) {
4222 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4225 item->target = pTargetLocation;
4226 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
4227 WBXMLTreeNode *grandgrandchild = NULL;
4229 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
4230 if (grandgrandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4232 const char *grandgrandchild_xml_name = NULL;
4233 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
4235 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
4236 char *contentType = NULL;
4237 err = get_text_pointer_from_wbxml_node(grandgrandchild, &contentType);
4238 if (err != PROTOCOL_BINDER_OK) {
4241 FW_LOGV("Content Type = [%s]" , contentType);
4242 if (contentType != NULL)
4243 item->contenttype = strdup(contentType);
4244 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
4246 err = get_text_pointer_from_wbxml_node(grandgrandchild, &size);
4247 if (err != PROTOCOL_BINDER_OK) {
4250 FW_LOGV("Size = [%s]" , size);
4252 item->size = atoi(size);
4255 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
4257 err = get_text_pointer_from_wbxml_cdata_node(grandchild, &data);
4258 if (err != PROTOCOL_BINDER_OK) {
4261 FW_LOGV("Data = [%s]" , data);
4263 item->private.data = strdup(data);
4264 item->dataType = ITEM_DATA;
4265 } else if (strcmp(grandchild_xml_name, ELEMENT_MOREDATA) == 0) {
4266 FW_LOGV("MoreData");
4270 pAdd->private.change.items = g_list_append(pAdd->private.change.items, item);
4276 if (err == PROTOCOL_BINDER_OK) {
4286 static PROTOCOL_BINDER_ERROR __oma_ds_binder_replace_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4287 WBXMLTreeNode *wbxml_dom_node,
4288 Content_Ptr *pContent)
4291 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4293 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
4295 /* get data from dom tree */
4296 Command *pReplace = (Command *)calloc(1, sizeof(Command));
4297 if (pReplace == NULL) {
4298 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4299 FW_LOGE("pReplace is null");
4303 pReplace->type = COMMAND_TYPE_REPLACE;;
4304 pReplace->msgID = pSyncHdr->messageID;
4305 pReplace->private.change.type = CHANGE_REPLACE;
4306 pReplace->refCount = 1;
4310 WBXMLTreeNode *child = NULL;
4312 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
4313 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
4315 const char *child_xml_name = NULL;
4316 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
4318 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
4319 char *cmd_id = NULL;
4320 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
4321 if (err != PROTOCOL_BINDER_OK) {
4324 FW_LOGV("CmdID = [%s]" , cmd_id);
4326 pReplace->cmdID = atoi(cmd_id);
4328 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
4330 pReplace->noResp = 1;
4331 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
4334 pCred = __get_cred(child);
4335 if (pCred == NULL) {
4336 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4339 pReplace->cred = pCred;
4340 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
4342 item = create_item();
4344 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4347 WBXMLTreeNode *grandchild = NULL;
4348 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4349 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4351 const char *grandchild_xml_name = NULL;
4352 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4354 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
4355 char *contentType = NULL;
4356 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
4357 if (err != PROTOCOL_BINDER_OK) {
4360 FW_LOGV("Content Type = [%s]" , contentType);
4361 if (contentType != NULL)
4362 item->contenttype = strdup(contentType);
4363 } else if (strcmp(grandchild_xml_name, ELEMENT_SIZE) == 0) {
4365 err = get_text_pointer_from_wbxml_node(grandchild, &size);
4366 if (err != PROTOCOL_BINDER_OK) {
4369 FW_LOGV("Size = [%s]" , size);
4371 item->size = atoi(size);
4374 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
4377 item = create_item();
4379 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4384 WBXMLTreeNode *grandchild = NULL;
4385 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4386 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4388 const char *grandchild_xml_name = NULL;
4389 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4391 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
4392 Location *pSourceLocation = _get_location(grandchild);
4393 if (pSourceLocation == NULL) {
4394 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4397 item->source = pSourceLocation;
4398 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
4399 Location *pTargetLocation = _get_location(grandchild);
4400 if (pTargetLocation == NULL) {
4401 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4404 item->target = pTargetLocation;
4405 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
4406 WBXMLTreeNode *grandgrandchild = NULL;
4408 for (grandgrandchild = grandchild->children; grandgrandchild != NULL; grandgrandchild = grandgrandchild->next) {
4409 if (grandgrandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4411 const char *grandgrandchild_xml_name = NULL;
4412 grandgrandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandgrandchild->name);
4414 if (strcmp(grandgrandchild_xml_name, ELEMENT_TYPE) == 0) {
4415 char *contentType = NULL;
4416 err = get_text_pointer_from_wbxml_node(grandgrandchild, &contentType);
4417 if (err != PROTOCOL_BINDER_OK) {
4420 FW_LOGV("Content Type = [%s]" , contentType);
4421 if (contentType != NULL)
4422 item->contenttype = strdup(contentType);
4423 } else if (strcmp(grandgrandchild_xml_name, ELEMENT_SIZE) == 0) {
4425 err = get_text_pointer_from_wbxml_node(grandgrandchild, &size);
4426 if (err != PROTOCOL_BINDER_OK) {
4429 FW_LOGV("Size = [%s]" , size);
4431 item->size = atoi(size);
4435 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
4437 err = get_text_pointer_from_wbxml_cdata_node(grandchild, &data);
4438 if (err != PROTOCOL_BINDER_OK) {
4441 FW_LOGV("Data = [%s]" , data);
4443 item->private.data = strdup(data);
4444 item->dataType = ITEM_DATA;
4447 pReplace->private.change.items = g_list_append(pReplace->private.change.items, item);
4453 if (err == PROTOCOL_BINDER_OK) {
4455 *pContent = pReplace;
4458 free_command(pReplace);
4463 static PROTOCOL_BINDER_ERROR __oma_ds_binder_delete_command_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4464 WBXMLTreeNode *wbxml_dom_node,
4465 Content_Ptr *pContent)
4468 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4470 SyncHdr *pSyncHdr = (SyncHdr *)reverse_protocol_binder_get_user_data(pReverse_binder);
4472 /* get data from dom tree */
4473 Command *pDelete = (Command *)calloc(1, sizeof(Command));
4474 if (pDelete == NULL) {
4475 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4476 FW_LOGE("pDelete is null");
4480 pDelete->type = COMMAND_TYPE_DELETE;
4481 pDelete->msgID = pSyncHdr->messageID;
4482 pDelete->private.change.type = CHANGE_DELETE;
4483 pDelete->refCount = 1;
4485 WBXMLTreeNode *child = NULL;
4487 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
4488 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
4490 const char *child_xml_name = NULL;
4491 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
4494 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
4495 char *cmd_id = NULL;
4496 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
4497 if (err != PROTOCOL_BINDER_OK) {
4500 FW_LOGV("CmdID = [%s]" , cmd_id);
4502 pDelete->cmdID = atoi(cmd_id);
4503 } else if (strcmp(child_xml_name, ELEMENT_NORESP) == 0) {
4505 pDelete->noResp = 1;
4506 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
4509 pCred = __get_cred(child);
4510 if (pCred == NULL) {
4511 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4514 pDelete->cred = pCred;
4515 } else if (strcmp(child_xml_name, ELEMENT_META) == 0) {
4516 WBXMLTreeNode *grandchild = NULL;
4520 item = create_item();
4522 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4526 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4527 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4529 const char *grandchild_xml_name = NULL;
4530 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4532 if (strcmp(grandchild_xml_name, ELEMENT_TYPE) == 0) {
4533 char *contentType = NULL;
4534 err = get_text_pointer_from_wbxml_node(grandchild, &contentType);
4535 if (err != PROTOCOL_BINDER_OK) {
4538 FW_LOGV("Content Type = [%s]" , contentType);
4539 if (contentType != NULL)
4540 item->contenttype = strdup(contentType);
4543 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
4546 item = create_item();
4548 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4552 WBXMLTreeNode *grandchild = NULL;
4554 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4555 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4557 const char *grandchild_xml_name = NULL;
4558 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4560 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
4561 Location *pSourceLocation = _get_location(grandchild);
4562 if (pSourceLocation == NULL) {
4563 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4566 item->source = pSourceLocation;
4567 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
4568 Location *pTargetLocation = _get_location(grandchild);
4569 if (pTargetLocation == NULL) {
4570 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4573 item->target = pTargetLocation;
4574 } else if (strcmp(grandchild_xml_name, ELEMENT_META) == 0) {
4576 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
4580 pDelete->private.change.items = g_list_append(pDelete->private.change.items, item);
4585 if (err == PROTOCOL_BINDER_OK) {
4587 *pContent = pDelete;
4590 free_command(pDelete);
4594 static PROTOCOL_BINDER_ERROR __oma_ds_binder_final_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4595 WBXMLTreeNode *wbxml_dom_node,
4596 Content_Ptr *pContent)
4599 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4601 int *pFinal = (int *)1;
4608 static PROTOCOL_BINDER_ERROR __oma_ds_binder_status_reverse_converter_function(Reverse_protocol_binder *pReverse_binder,
4609 WBXMLTreeNode *wbxml_dom_node,
4610 Content_Ptr *pContent)
4613 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4615 /* get data from dom tree */
4616 Status *pStatus = (Status *)calloc(1, sizeof(Status));
4617 if (pStatus == NULL) {
4618 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4619 FW_LOGE("pStatus is null");
4623 WBXMLTreeNode *child = NULL;
4624 for (child = wbxml_dom_node->children; child != NULL; child = child->next) {
4625 if (child->type != WBXML_TREE_ELEMENT_NODE) continue;
4626 const char *child_xml_name = NULL;
4627 child_xml_name = (const char *)wbxml_tag_get_xml_name(child->name);
4629 if (strcmp(child_xml_name, ELEMENT_CMDID) == 0) {
4630 char *cmd_id = NULL;
4631 err = get_text_pointer_from_wbxml_node(child, &cmd_id);
4632 if (err != PROTOCOL_BINDER_OK) {
4635 FW_LOGV("CmdID = [%s]" , cmd_id);
4637 pStatus->cmdID = atoi(cmd_id);
4638 } else if (strcmp(child_xml_name, ELEMENT_MSGREF) == 0) {
4639 char *msgref = NULL;
4640 err = get_text_pointer_from_wbxml_node(child, &msgref);
4641 if (err != PROTOCOL_BINDER_OK) {
4644 FW_LOGV("MsgRef = [%s]" , msgref);
4646 pStatus->msgRef = atoi(msgref);
4647 } else if (strcmp(child_xml_name, ELEMENT_CMDREF) == 0) {
4648 char *cmdref = NULL;
4649 err = get_text_pointer_from_wbxml_node(child, &cmdref);
4650 if (err != PROTOCOL_BINDER_OK) {
4653 FW_LOGV("CmdRef = [%s]" , cmdref);
4655 pStatus->cmdRef = atoi(cmdref);
4656 } else if (strcmp(child_xml_name, ELEMENT_CMD) == 0) {
4658 err = get_text_pointer_from_wbxml_node(child, &cmd);
4659 if (err != PROTOCOL_BINDER_OK) {
4662 FW_LOGV("Cmd = [%s]" , cmd);
4664 pStatus->type = convert_command_type(cmd);
4665 } else if (strcmp(child_xml_name, ELEMENT_TARGETREF) == 0) {
4666 char *targetref = NULL;
4667 Location *pLocation = NULL;
4668 err = get_text_pointer_from_wbxml_node(child, &targetref);
4669 if (err != PROTOCOL_BINDER_OK) {
4672 FW_LOGV("TargetRef = [%s]" , targetref);
4674 create_location(targetref, NULL, &pLocation);
4675 pStatus->targetRef = pLocation;
4676 } else if (strcmp(child_xml_name, ELEMENT_SOURCEREF) == 0) {
4677 char *sourceref = NULL;
4678 Location *pLocation = NULL;
4679 err = get_text_pointer_from_wbxml_node(child, &sourceref);
4680 if (err != PROTOCOL_BINDER_OK) {
4683 FW_LOGV("SourceRef = [%s]" , sourceref);
4685 create_location(sourceref, NULL, &pLocation);
4686 pStatus->sourceRef = pLocation;
4687 } else if (strcmp(child_xml_name, ELEMENT_CRED) == 0) {
4690 pCred = __get_cred(child);
4691 if (pCred == NULL) {
4692 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4695 pStatus->cred = pCred;
4696 } else if (strcmp(child_xml_name, ELEMENT_CHAL) == 0) {
4699 pChal = _get_chal(child);
4700 if (pChal == NULL) {
4701 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4704 pStatus->chal = pChal;
4705 } else if (strcmp(child_xml_name, ELEMENT_DATA) == 0) {
4707 err = get_text_pointer_from_wbxml_node(child, &data);
4708 if (err != PROTOCOL_BINDER_OK) {
4711 FW_LOGV("Data = [%s]\n" , data);
4713 pStatus->data = strdup(data);
4714 } else if (strcmp(child_xml_name, ELEMENT_ITEM) == 0) {
4715 WBXMLTreeNode *grandchild = NULL;
4717 for (grandchild = child->children; grandchild != NULL; grandchild = grandchild->next) {
4718 if (grandchild->type != WBXML_TREE_ELEMENT_NODE) continue;
4720 const char *grandchild_xml_name = NULL;
4721 grandchild_xml_name = (const char *)wbxml_tag_get_xml_name(grandchild->name);
4723 if (strcmp(grandchild_xml_name, ELEMENT_SOURCE) == 0) {
4724 Location *pSourceLocation = _get_location(grandchild);
4725 if (pSourceLocation == NULL) {
4726 err = PROTOCOL_BINDER_OUT_OF_MEMORY;
4729 pStatus->sourceRef = pSourceLocation;
4730 } else if (strcmp(grandchild_xml_name, ELEMENT_TARGET) == 0) {
4732 } else if (strcmp(grandchild_xml_name, ELEMENT_DATA) == 0) {
4740 if (err == PROTOCOL_BINDER_OK) {
4742 *pContent = pStatus;
4745 free_status(pStatus);
4750 PROTOCOL_BINDER_ERROR init_oma_ds_1_2_binder_function_set(Binder_function_set **pBinder_function_set)
4752 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4754 err = init_binder_function_set(sizeof(oma_ds_binder_function_info)/sizeof(Binder_function_info),
4755 (Binder_function_info*)oma_ds_binder_function_info,
4756 pBinder_function_set);
4761 void free_oma_ds_1_2_binder_function_set(Binder_function_set *pBinder_function_set)
4763 free_binder_function_set(pBinder_function_set);
4766 protocol_binder *oma_ds_1_2_binder_init(protocol_binder *pBinder, Encoding enc, bool encode_xml_header,
4767 bool use_strtbl, bool produce_anonymous, bool use_flow_mode,
4768 Binder_function_set *pBinder_function_set)
4770 protocol_binder *pOutBinder = NULL;
4772 pOutBinder = protocol_binder_init(pBinder, PROTOCOL_SYNCML_SYNCML12, NULL, enc,
4773 encode_xml_header, use_strtbl, produce_anonymous, use_flow_mode, NULL, NULL,
4774 pBinder_function_set);
4776 if (pOutBinder == NULL) {
4785 PROTOCOL_BINDER_ERROR oma_ds_1_2_binder_append(protocol_binder *pBinder,
4786 OMA_DS_Protocol_Element protocol_element,
4787 Content_Ptr pContent)
4789 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4791 err = protocol_binder_append(pBinder, protocol_element, pContent);
4797 void oma_ds_1_2_binder_terminate(protocol_binder *pBinder)
4799 protocol_binder_terminate(pBinder);
4802 PROTOCOL_BINDER_ERROR oma_ds_1_2_binder_get_stream(protocol_binder *pBinder,
4804 unsigned int *byte_stream_size)
4806 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4808 err = protocol_binder_get_stream(pBinder, byte_stream, byte_stream_size);
4809 if (err != PROTOCOL_BINDER_OK) {
4817 PROTOCOL_BINDER_ERROR oma_ds_1_2_binder_get_stream_size(protocol_binder *pBinder, unsigned int *byte_stream_size)
4819 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4821 err = protocol_binder_get_stream_size(pBinder, byte_stream_size);
4826 PROTOCOL_BINDER_ERROR oma_ds_1_2_binder_get_encoding(protocol_binder *pBinder, Encoding *enc)
4828 PROTOCOL_BINDER_ERROR err = PROTOCOL_BINDER_OK;
4830 err = protocol_binder_get_encoding(pBinder, enc);
4834 PROTOCOL_BINDER_ERROR reverse_oma_ds_1_2_binder_init(char *byte_stream,
4835 unsigned int byte_stream_len,
4837 Binder_function_set *pBinder_function_set,
4839 Reverse_protocol_binder **ppBinder)
4841 Protocol protocol = PROTOCOL_UNKNOWN;
4842 PROTOCOL_BINDER_ERROR err = reverse_protocol_binder_init(byte_stream, byte_stream_len, dec,
4843 &protocol, pBinder_function_set, user_data, ppBinder);
4848 PROTOCOL_BINDER_ERROR reverse_oma_ds_1_2_binder_next(Reverse_protocol_binder *pBinder,
4849 OMA_DS_Protocol_Element *protocol_element,
4850 char **protocol_element_name,
4851 Content_Ptr *pContent)
4853 PROTOCOL_BINDER_ERROR err = reverse_protocol_binder_next(pBinder,
4854 protocol_element, protocol_element_name, pContent);