javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp
changeset 79 2f468c1958d0
parent 47 f40128debb5d
child 87 1627c337e51e
equal deleted inserted replaced
76:4ad59aaee882 79:2f468c1958d0
   205             char *fileName = java::util::JavaCommonUtils::wstringToUtf8(
   205             char *fileName = java::util::JavaCommonUtils::wstringToUtf8(
   206                                  persistentFileName);
   206                                  persistentFileName);
   207             persistentRecFd = open(fileName, O_RDONLY);
   207             persistentRecFd = open(fileName, O_RDONLY);
   208             delete[] fileName;
   208             delete[] fileName;
   209         }
   209         }
   210         catch (ExceptionBase ex)
   210         catch (ExceptionBase &ex)
   211         {
   211         {
   212             ELOG1(
   212             ELOG1(
   213                 EJavaBluetooth,
   213                 EJavaBluetooth,
   214                 "- ServiceRecord::restorePersistentRecordFs exception Caught: %S",
   214                 "- ServiceRecord::restorePersistentRecordFs exception Caught: %S",
   215                 ex.toString().c_str());
   215                 ex.toString().c_str());
   283         case DataElement_INT_2:
   283         case DataElement_INT_2:
   284         case DataElement_INT_4:
   284         case DataElement_INT_4:
   285         {
   285         {
   286             int len = 0;
   286             int len = 0;
   287             ret = read(persistentRecFd, &len, sizeof(len));
   287             ret = read(persistentRecFd, &len, sizeof(len));
   288             if (ret <= 0)
   288             if (ret <= 0 || (len <= 0 || len >4))
   289                 break;
   289                 break;
   290 
   290 
   291             TUint8 buf[20] = { 0 };
   291             TUint8 buf[4] = { 0 };
   292             ret = read(persistentRecFd, buf, len);
   292             ret = read(persistentRecFd, buf, len);
   293             if (ret <= 0)
   293             if (ret <= 0)
   294                 break;
   294                 break;
   295             std::auto_ptr<HBufC8> val(convertIntToDesC(buf, dataType));
   295             std::auto_ptr<HBufC8> val(convertIntToDesC(buf, dataType));
   296             err = setAttributeIntFs(attrId, dataType, *val, EFalse);
   296             err = setAttributeIntFs(attrId, dataType, *val, EFalse);
   299         case DataElement_INT_8:
   299         case DataElement_INT_8:
   300         case DataElement_INT_16:
   300         case DataElement_INT_16:
   301         {
   301         {
   302             int len = 0;
   302             int len = 0;
   303             ret = read(persistentRecFd, &len, sizeof(len));
   303             ret = read(persistentRecFd, &len, sizeof(len));
   304             if (ret <= 0)
   304             if (ret <= 0 || (len <= 0 || len >16))
   305                 break;
   305                 break;
   306 
   306 
   307             TUint8 buf[20] = { 0 };
   307             TUint8 buf[16] = { 0 };
   308             ret = read(persistentRecFd, buf, len);
   308             ret = read(persistentRecFd, buf, len);
   309             if (ret <= 0)
   309             if (ret <= 0)
   310                 break;
   310                 break;
   311             TPtrC8 val(buf, len);
   311             TPtrC8 val(buf, len);
   312             err = setAttributeIntFs(attrId, dataType, val, EFalse);
   312             err = setAttributeIntFs(attrId, dataType, val, EFalse);
   316         case DataElement_U_INT_2:
   316         case DataElement_U_INT_2:
   317         case DataElement_U_INT_4:
   317         case DataElement_U_INT_4:
   318         {
   318         {
   319             int len = 0;
   319             int len = 0;
   320             ret = read(persistentRecFd, &len, sizeof(len));
   320             ret = read(persistentRecFd, &len, sizeof(len));
   321             if (ret <= 0)
   321             if (ret <= 0 || (len <= 0 || len >4))
   322                 break;
   322                 break;
   323 
   323 
   324             TUint8 buf[20] = { 0 };
   324             TUint8 buf[4] = { 0 };
   325             ret = read(persistentRecFd, buf, len);
   325             ret = read(persistentRecFd, buf, len);
   326             if (ret <= 0)
   326             if (ret <= 0)
   327                 break;
   327                 break;
   328 
   328 
   329             LOG2(EJavaBluetooth, EInfo, "  ServiceRecord reading INT8 %X, %S",
   329             LOG2(EJavaBluetooth, EInfo, "  ServiceRecord reading INT8 %X, %S",
   336         case DataElement_U_INT_8:
   336         case DataElement_U_INT_8:
   337         case DataElement_U_INT_16:
   337         case DataElement_U_INT_16:
   338         {
   338         {
   339             int len = 0;
   339             int len = 0;
   340             ret = read(persistentRecFd, &len, sizeof(len));
   340             ret = read(persistentRecFd, &len, sizeof(len));
   341             if (ret <= 0)
   341             if (ret <= 0 || (len <= 0 || len >16))
   342                 break;
   342                 break;
   343 
   343 
   344             TUint8 buf[20] = { 0 };
   344             TUint8 buf[16] = { 0 };
   345             ret = read(persistentRecFd, buf, len);
   345             ret = read(persistentRecFd, buf, len);
   346             if (ret <= 0)
   346             if (ret <= 0)
   347                 break;
   347                 break;
   348 
   348 
   349             LOG2(EJavaBluetooth, EInfo, "  ServiceRecord reading INT16 %X, %S",
   349             LOG2(EJavaBluetooth, EInfo, "  ServiceRecord reading INT16 %X, %S",
   355         }
   355         }
   356         case DataElement_UUID:
   356         case DataElement_UUID:
   357         {
   357         {
   358             int len = 0;
   358             int len = 0;
   359             ret = read(persistentRecFd, &len, sizeof(len));
   359             ret = read(persistentRecFd, &len, sizeof(len));
   360             if (ret <= 0)
   360             if (ret <= 0 || (len <= 0 || len >256))
   361                 break;
   361                 break;
   362 
   362 
   363             TUint8 buf[256] = { 0 };
   363             TUint8 buf[256] = { 0 };
   364             ret = read(persistentRecFd, buf, len);
   364             ret = read(persistentRecFd, buf, len);
   365             if (ret <= 0)
   365             if (ret <= 0)
   381         }
   381         }
   382         case DataElement_STRING:
   382         case DataElement_STRING:
   383         {
   383         {
   384             int len = 0;
   384             int len = 0;
   385             ret = read(persistentRecFd, &len, sizeof(len));
   385             ret = read(persistentRecFd, &len, sizeof(len));
   386             if (ret <= 0)
   386             if (ret <= 0 || (len <= 0 || len >1024))
   387                 break;
   387                 break;
   388 
   388 
   389             TUint8 buf[1024] = {0};
   389             TUint8 buf[1024] = {0};
   390             ret = read(persistentRecFd, buf, len);
   390             ret = read(persistentRecFd, buf, len);
   391             if (ret <= 0)
   391             if (ret <= 0)
   400         }
   400         }
   401         case DataElement_URL:
   401         case DataElement_URL:
   402         {
   402         {
   403             int len = 0;
   403             int len = 0;
   404             ret = read(persistentRecFd, &len, sizeof(len));
   404             ret = read(persistentRecFd, &len, sizeof(len));
   405             if (ret <= 0)
   405             if (ret <= 0 || (len <= 0 || len >1024))
   406                 break;
   406                 break;
   407 
   407 
   408             TUint8 buf[1024] = {0};
   408             TUint8 buf[1024] = {0};
   409             ret = read(persistentRecFd, buf, len);
   409             ret = read(persistentRecFd, buf, len);
   410             if (ret <= 0)
   410             if (ret <= 0)
   618             write(mSrvRecFd, (char *) &aDeviceServiceClasses,
   618             write(mSrvRecFd, (char *) &aDeviceServiceClasses,
   619                   sizeof(aDeviceServiceClasses));
   619                   sizeof(aDeviceServiceClasses));
   620 
   620 
   621             delete[] fileName;
   621             delete[] fileName;
   622         }
   622         }
   623         catch (ExceptionBase ex)
   623         catch (ExceptionBase &ex)
   624         {
   624         {
   625             ELOG1(
   625             ELOG1(
   626                 EJavaBluetooth,
   626                 EJavaBluetooth,
   627                 "- ServiceRecord::initializeUpdateRecord exception Caught: %S",
   627                 "- ServiceRecord::initializeUpdateRecord exception Caught: %S",
   628                 ex.toString().c_str());
   628                 ex.toString().c_str());
   686                 delete[] dirName;
   686                 delete[] dirName;
   687                 return noFileName;
   687                 return noFileName;
   688             }
   688             }
   689             delete[] dirName;
   689             delete[] dirName;
   690         }
   690         }
   691         catch (ExceptionBase ex)
   691         catch (ExceptionBase &ex)
   692         {
   692         {
   693             ELOG1(EJavaBluetooth,
   693             ELOG1(EJavaBluetooth,
   694                   "- ServiceRecord::getPersistentFileName exception Caught: %S",
   694                   "- ServiceRecord::getPersistentFileName exception Caught: %S",
   695                   ex.toString().c_str());
   695                   ex.toString().c_str());
   696             return noFileName;
   696             return noFileName;
  1286             char *fileName =
  1286             char *fileName =
  1287                 java::util::JavaCommonUtils::wstringToUtf8(persistentFileName);
  1287                 java::util::JavaCommonUtils::wstringToUtf8(persistentFileName);
  1288             persistentRecFd = open(fileName, O_RDONLY);
  1288             persistentRecFd = open(fileName, O_RDONLY);
  1289             delete[] fileName;
  1289             delete[] fileName;
  1290         }
  1290         }
  1291         catch (ExceptionBase ex)
  1291         catch (ExceptionBase &ex)
  1292         {
  1292         {
  1293             ELOG1(EJavaBluetooth,
  1293             ELOG1(EJavaBluetooth,
  1294                   "- ServiceRecord::restoreJavaServiceRecord exception caught: %S",
  1294                   "- ServiceRecord::restoreJavaServiceRecord exception caught: %S",
  1295                   ex.toString().c_str());
  1295                   ex.toString().c_str());
  1296         }
  1296         }
  1381         case DataElement_U_INT_2:
  1381         case DataElement_U_INT_2:
  1382         case DataElement_U_INT_4:
  1382         case DataElement_U_INT_4:
  1383         {
  1383         {
  1384             int len = 0;
  1384             int len = 0;
  1385             ret = read(persistentRecFd, &len, sizeof(len));
  1385             ret = read(persistentRecFd, &len, sizeof(len));
  1386             if (ret <= 0)
  1386             if (ret <= 0 || (len <= 0 || len >4))
  1387                 break;
  1387                 break;
  1388 
  1388 
  1389             TUint8 bytes[20] = {0};
  1389             TUint8 bytes[4] = {0};
  1390             ret = read(persistentRecFd, bytes, len);
  1390             ret = read(persistentRecFd, bytes, len);
  1391             if (ret <= 0)
  1391             if (ret <= 0)
  1392                 break;
  1392                 break;
  1393 
  1393 
  1394             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, 0x%X", len, bytes);
  1394             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, 0x%X", len, bytes);
  1400         case DataElement_U_INT_8:
  1400         case DataElement_U_INT_8:
  1401         case DataElement_U_INT_16:
  1401         case DataElement_U_INT_16:
  1402         {
  1402         {
  1403             int len = 0;
  1403             int len = 0;
  1404             ret = read(persistentRecFd, &len, sizeof(len));
  1404             ret = read(persistentRecFd, &len, sizeof(len));
  1405             if (ret <= 0)
  1405             if (ret <= 0 || (len <= 0 || len > 16))
  1406                 break;
  1406                 break;
  1407 
  1407 
  1408             TUint8 buf[20] = {0};
  1408             TUint8 buf[16] = {0};
  1409             ret = read(persistentRecFd, buf, len);
  1409             ret = read(persistentRecFd, buf, len);
  1410             if (ret <= 0)
  1410             if (ret <= 0)
  1411                 break;
  1411                 break;
  1412 
  1412 
  1413             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, %S", len, buf);
  1413             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, %S", len, buf);
  1420         case DataElement_INT_2:
  1420         case DataElement_INT_2:
  1421         case DataElement_INT_4:
  1421         case DataElement_INT_4:
  1422         {
  1422         {
  1423             int len = 0;
  1423             int len = 0;
  1424             ret = read(persistentRecFd, &len, sizeof(len));
  1424             ret = read(persistentRecFd, &len, sizeof(len));
  1425             if (ret <= 0)
  1425             if (ret <= 0 || (len <= 0 || len >4))
  1426                 break;
  1426                 break;
  1427 
  1427 
  1428             TUint8 bytes[20] = {0};
  1428             TUint8 bytes[4] = {0};
  1429             ret = read(persistentRecFd, bytes, len);
  1429             ret = read(persistentRecFd, bytes, len);
  1430             if (ret <= 0)
  1430             if (ret <= 0)
  1431                 break;
  1431                 break;
  1432 
  1432 
  1433             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, %S", len, bytes);
  1433             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT 0x%X, %S", len, bytes);
  1439         case DataElement_INT_8:
  1439         case DataElement_INT_8:
  1440         case DataElement_INT_16:
  1440         case DataElement_INT_16:
  1441         {
  1441         {
  1442             int len = 0;
  1442             int len = 0;
  1443             ret = read(persistentRecFd, &len, sizeof(len));
  1443             ret = read(persistentRecFd, &len, sizeof(len));
  1444             if (ret <= 0)
  1444             if (ret <= 0 || (len <= 0 || len >16))
  1445                 break;
  1445                 break;
  1446 
  1446 
  1447             TUint8 buf[20] = {0};
  1447             TUint8 buf[16] = {0};
  1448             ret = read(persistentRecFd, buf, len);
  1448             ret = read(persistentRecFd, buf, len);
  1449             if (ret <= 0)
  1449             if (ret <= 0)
  1450                 break;
  1450                 break;
  1451 
  1451 
  1452             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT %X, %S", len, buf);
  1452             LOG2(EJavaBluetooth, EInfo,  "  ServiceRecord reading INT %X, %S", len, buf);
  1457         }
  1457         }
  1458         case DataElement_UUID:
  1458         case DataElement_UUID:
  1459         {
  1459         {
  1460             int len = 0;
  1460             int len = 0;
  1461             ret = read(persistentRecFd, &len, sizeof(len));
  1461             ret = read(persistentRecFd, &len, sizeof(len));
  1462             if (ret <= 0)
  1462             if (ret <= 0 || (len <= 0 || len >256))
  1463                 break;
  1463                 break;
  1464 
  1464 
  1465             TUint8 buf[256] = {0};
  1465             TUint8 buf[256] = {0};
  1466             ret = read(persistentRecFd, buf, len);
  1466             ret = read(persistentRecFd, buf, len);
  1467             if (ret <= 0)
  1467             if (ret <= 0)
  1479         }
  1479         }
  1480         case DataElement_STRING:
  1480         case DataElement_STRING:
  1481         {
  1481         {
  1482             int len = 0;
  1482             int len = 0;
  1483             ret = read(persistentRecFd, &len, sizeof(len));
  1483             ret = read(persistentRecFd, &len, sizeof(len));
  1484             if (ret <= 0)
  1484             if (ret <= 0 || (len <= 0 || len >1024))
  1485                 break;
  1485                 break;
  1486 
  1486 
  1487             TUint8 buf[1024] = {0};
  1487             TUint8 buf[1024] = {0};
  1488             ret = read(persistentRecFd, buf, len);
  1488             ret = read(persistentRecFd, buf, len);
  1489             if (ret <= 0)
  1489             if (ret <= 0)
  1500         }
  1500         }
  1501         case DataElement_URL:
  1501         case DataElement_URL:
  1502         {
  1502         {
  1503             int len = 0;
  1503             int len = 0;
  1504             ret = read(persistentRecFd, &len, sizeof(len));
  1504             ret = read(persistentRecFd, &len, sizeof(len));
  1505             if (ret <= 0)
  1505             if (ret <= 0 || (len <= 0 || len >1024))
  1506                 break;
  1506                 break;
  1507 
  1507 
  1508             TUint8 buf[1024] = {0};
  1508             TUint8 buf[1024] = {0};
  1509             ret = read(persistentRecFd, buf, len);
  1509             ret = read(persistentRecFd, buf, len);
  1510             if (ret <= 0)
  1510             if (ret <= 0)