Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
293063ee
Commit
293063ee
authored
Oct 24, 2012
by
Alexander Smorkalov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code normalization problems fixed.
Rair hangs on library installation fixed.
parent
680fba7e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
356 additions
and
366 deletions
+356
-366
BnOpenCVEngine.cpp
...oid/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp
+45
-47
HardwareDetector.cpp
...d/service/engine/jni/BinderComponent/HardwareDetector.cpp
+86
-85
OpenCVEngine.cpp
android/service/engine/jni/BinderComponent/OpenCVEngine.cpp
+65
-73
ProcReader.cpp
android/service/engine/jni/BinderComponent/ProcReader.cpp
+9
-9
StringUtils.cpp
android/service/engine/jni/BinderComponent/StringUtils.cpp
+21
-22
TegraDetector.cpp
android/service/engine/jni/BinderComponent/TegraDetector.cpp
+25
-25
JavaBasedPackageManager.cpp
...service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp
+32
-32
OpenCVEngine_jni.cpp
android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp
+15
-16
ClientMain.cpp
android/service/engine/jni/NativeClient/ClientMain.cpp
+4
-4
CommonPackageManager.cpp
...service/engine/jni/NativeService/CommonPackageManager.cpp
+53
-52
PackageInfo.cpp
android/service/engine/jni/NativeService/PackageInfo.cpp
+0
-0
OpenCVEngineTest.cpp
android/service/engine/jni/Tests/OpenCVEngineTest.cpp
+1
-1
No files found.
android/service/engine/jni/BinderComponent/BnOpenCVEngine.cpp
View file @
293063ee
...
@@ -21,53 +21,51 @@ status_t BnOpenCVEngine::onTransact(uint32_t code, const Parcel& data, android::
...
@@ -21,53 +21,51 @@ status_t BnOpenCVEngine::onTransact(uint32_t code, const Parcel& data, android::
switch
(
code
)
switch
(
code
)
{
{
case
OCVE_GET_ENGINE_VERSION
:
case
OCVE_GET_ENGINE_VERSION
:
{
{
LOGD
(
"OpenCVEngine OCVE_GET_ENGINE_VERSION request"
);
LOGD
(
"OpenCVEngine OCVE_GET_ENGINE_VERSION request"
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
LOGD
(
"OpenCVEngine::GetVersion()"
);
LOGD
(
"OpenCVEngine::GetVersion()"
);
reply
->
writeInt32
(
0
);
reply
->
writeInt32
(
0
);
return
reply
->
writeInt32
(
GetVersion
());
return
reply
->
writeInt32
(
GetVersion
());
}
break
;
}
break
;
case
OCVE_GET_LIB_PATH_BY_VERSION
:
case
OCVE_GET_LIB_PATH_BY_VERSION
:
{
{
LOGD
(
"OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request"
);
LOGD
(
"OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request"
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
const
String16
version
=
data
.
readString16
();
const
String16
version
=
data
.
readString16
();
LOGD
(
"OpenCVEngine::GetLibPathByVersion(%s)"
,
String8
(
version
).
string
());
LOGD
(
"OpenCVEngine::GetLibPathByVersion(%s)"
,
String8
(
version
).
string
());
String16
path
=
GetLibPathByVersion
(
version
);
String16
path
=
GetLibPathByVersion
(
version
);
reply
->
writeInt32
(
0
);
reply
->
writeInt32
(
0
);
return
reply
->
writeString16
(
path
);
return
reply
->
writeString16
(
path
);
}
break
;
}
break
;
case
OCVE_GET_LIB_LIST
:
case
OCVE_GET_LIB_LIST
:
{
{
LOGD
(
"OpenCVEngine OCVE_GET_LIB_LIST request"
);
LOGD
(
"OpenCVEngine OCVE_GET_LIB_LIST request"
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
const
String16
version
=
data
.
readString16
();
const
String16
version
=
data
.
readString16
();
LOGD
(
"OpenCVEngine::GetLibraryList(%s)"
,
String8
(
version
).
string
());
LOGD
(
"OpenCVEngine::GetLibraryList(%s)"
,
String8
(
version
).
string
());
String16
path
=
GetLibraryList
(
version
);
String16
path
=
GetLibraryList
(
version
);
reply
->
writeInt32
(
0
);
reply
->
writeInt32
(
0
);
return
reply
->
writeString16
(
path
);
return
reply
->
writeString16
(
path
);
}
break
;
}
break
;
case
OCVE_INSTALL_VERSION
:
case
OCVE_INSTALL_VERSION
:
{
{
LOGD
(
"OpenCVEngine OCVE_INSTALL_VERSION request"
);
LOGD
(
"OpenCVEngine OCVE_INSTALL_VERSION request"
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
CHECK_INTERFACE
(
IOpenCVEngine
,
data
,
reply
);
const
String16
version
=
data
.
readString16
();
const
String16
version
=
data
.
readString16
();
LOGD
(
"OpenCVEngine::InstallVersion(%s)"
,
String8
(
version
).
string
());
LOGD
(
"OpenCVEngine::InstallVersion(%s)"
,
String8
(
version
).
string
());
bool
result
=
InstallVersion
(
version
);
bool
result
=
InstallVersion
(
version
);
reply
->
writeInt32
(
0
);
reply
->
writeInt32
(
0
);
int
res
=
reply
->
writeInt32
(
static_cast
<
int32_t
>
(
result
));
int
res
=
reply
->
writeInt32
(
static_cast
<
int32_t
>
(
result
));
LOGD
(
"InstallVersion call to Binder finished with res %d"
,
res
);
LOGD
(
"InstallVersion call to Binder finished with res %d"
,
res
);
return
res
;
return
res
;
}
break
;
}
break
;
default
:
{
default
:
LOGD
(
"OpenCVEngine unknown request"
);
{
return
BBinder
::
onTransact
(
code
,
data
,
reply
,
flags
);
LOGD
(
"OpenCVEngine unknown request"
);
}
return
BBinder
::
onTransact
(
code
,
data
,
reply
,
flags
);
}
}
}
return
android
::
NO_ERROR
;
return
android
::
NO_ERROR
;
...
...
android/service/engine/jni/BinderComponent/HardwareDetector.cpp
View file @
293063ee
...
@@ -13,97 +13,97 @@ int GetCpuID()
...
@@ -13,97 +13,97 @@ int GetCpuID()
map
<
string
,
string
>
cpu_info
=
GetCpuInfo
();
map
<
string
,
string
>
cpu_info
=
GetCpuInfo
();
map
<
string
,
string
>::
const_iterator
it
;
map
<
string
,
string
>::
const_iterator
it
;
#if defined(__i386__)
#if defined(__i386__)
LOGD
(
"Using X86 HW detector"
);
LOGD
(
"Using X86 HW detector"
);
result
|=
ARCH_X86
;
result
|=
ARCH_X86
;
it
=
cpu_info
.
find
(
"flags"
);
it
=
cpu_info
.
find
(
"flags"
);
if
(
cpu_info
.
end
()
!=
it
)
if
(
cpu_info
.
end
()
!=
it
)
{
{
set
<
string
>
features
=
SplitString
(
it
->
second
,
' '
);
set
<
string
>
features
=
SplitString
(
it
->
second
,
' '
);
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSE_STR
))
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSE_STR
))
{
{
result
|=
FEATURES_HAS_SSE
;
result
|=
FEATURES_HAS_SSE
;
}
}
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSE2_STR
))
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSE2_STR
))
{
{
result
|=
FEATURES_HAS_SSE2
;
result
|=
FEATURES_HAS_SSE2
;
}
}
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSSE3_STR
))
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_SSSE3_STR
))
{
{
result
|=
FEATURES_HAS_SSSE3
;
result
|=
FEATURES_HAS_SSSE3
;
}
}
}
}
#elif defined(__mips)
#elif defined(__mips)
#ifdef __SUPPORT_MIPS
#ifdef __SUPPORT_MIPS
result
|=
ARCH_MIPS
;
result
|=
ARCH_MIPS
;
#else
#else
result
=
ARCH_UNKNOWN
;
result
=
ARCH_UNKNOWN
;
#endif
#endif
#else
#else
LOGD
(
"Using ARM HW detector"
);
LOGD
(
"Using ARM HW detector"
);
it
=
cpu_info
.
find
(
"Processor"
);
it
=
cpu_info
.
find
(
"Processor"
);
if
(
cpu_info
.
end
()
!=
it
)
if
(
cpu_info
.
end
()
!=
it
)
{
{
size_t
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_X86_STR
);
size_t
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_X86_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
{
}
else
{
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV7_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
{
result
|=
ARCH_ARMv7
;
}
else
{
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV6_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
if
(
string
::
npos
!=
proc_name_pos
)
{
{
result
|=
ARCH_ARMv6
;
}
}
else
else
{
{
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV
5
_STR
);
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV
7
_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
if
(
string
::
npos
!=
proc_name_pos
)
{
{
result
|=
ARCH_ARMv5
;
result
|=
ARCH_ARMv7
;
}
else
{
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV6_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
{
result
|=
ARCH_ARMv6
;
}
else
{
proc_name_pos
=
it
->
second
.
find
(
CPU_INFO_ARCH_ARMV5_STR
);
if
(
string
::
npos
!=
proc_name_pos
)
{
result
|=
ARCH_ARMv5
;
}
}
}
}
}
}
}
}
}
}
else
else
{
{
return
ARCH_UNKNOWN
;
return
ARCH_UNKNOWN
;
}
}
it
=
cpu_info
.
find
(
"Features"
);
it
=
cpu_info
.
find
(
"Features"
);
if
(
cpu_info
.
end
()
!=
it
)
if
(
cpu_info
.
end
()
!=
it
)
{
{
set
<
string
>
features
=
SplitString
(
it
->
second
,
' '
);
set
<
string
>
features
=
SplitString
(
it
->
second
,
' '
);
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_NEON_STR
))
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_NEON_STR
))
{
result
|=
FEATURES_HAS_NEON
;
}
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_NEON2_STR
))
{
result
|=
FEATURES_HAS_NEON2
;
}
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_VFPV3_STR
))
{
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_VFPV3D16_STR
))
{
{
result
|=
FEATURES_HAS_VFPv3d16
;
result
|=
FEATURES_HAS_NEON
;
}
}
else
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_NEON2_STR
))
{
{
result
|=
FEATURES_HAS_VFPv3
;
result
|=
FEATURES_HAS_NEON2
;
}
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_VFPV3_STR
))
{
if
(
features
.
end
()
!=
features
.
find
(
CPU_INFO_VFPV3D16_STR
))
{
result
|=
FEATURES_HAS_VFPv3d16
;
}
else
{
result
|=
FEATURES_HAS_VFPv3
;
}
}
}
}
}
}
#endif
#endif
return
result
;
return
result
;
}
}
...
@@ -116,7 +116,7 @@ string GetPlatformName()
...
@@ -116,7 +116,7 @@ string GetPlatformName()
if
(
cpu_info
.
end
()
!=
hw_iterator
)
if
(
cpu_info
.
end
()
!=
hw_iterator
)
{
{
hardware_name
=
hw_iterator
->
second
;
hardware_name
=
hw_iterator
->
second
;
}
}
return
hardware_name
;
return
hardware_name
;
...
@@ -126,37 +126,37 @@ int GetProcessorCount()
...
@@ -126,37 +126,37 @@ int GetProcessorCount()
{
{
FILE
*
cpuPossible
=
fopen
(
"/sys/devices/system/cpu/possible"
,
"r"
);
FILE
*
cpuPossible
=
fopen
(
"/sys/devices/system/cpu/possible"
,
"r"
);
if
(
!
cpuPossible
)
if
(
!
cpuPossible
)
return
1
;
return
1
;
char
buf
[
2000
];
//big enough for 1000 CPUs in worst possible configuration
char
buf
[
2000
];
//big enough for 1000 CPUs in worst possible configuration
char
*
pbuf
=
fgets
(
buf
,
sizeof
(
buf
),
cpuPossible
);
char
*
pbuf
=
fgets
(
buf
,
sizeof
(
buf
),
cpuPossible
);
fclose
(
cpuPossible
);
fclose
(
cpuPossible
);
if
(
!
pbuf
)
if
(
!
pbuf
)
return
1
;
return
1
;
//parse string of form "0-1,3,5-7,10,13-15"
//parse string of form "0-1,3,5-7,10,13-15"
int
cpusAvailable
=
0
;
int
cpusAvailable
=
0
;
while
(
*
pbuf
)
while
(
*
pbuf
)
{
const
char
*
pos
=
pbuf
;
bool
range
=
false
;
while
(
*
pbuf
&&
*
pbuf
!=
','
)
{
{
if
(
*
pbuf
==
'-'
)
range
=
true
;
const
char
*
pos
=
pbuf
;
++
pbuf
;
bool
range
=
false
;
}
while
(
*
pbuf
&&
*
pbuf
!=
','
)
if
(
*
pbuf
)
*
pbuf
++
=
0
;
{
if
(
!
range
)
if
(
*
pbuf
==
'-'
)
range
=
true
;
++
cpusAvailable
;
++
pbuf
;
else
}
{
if
(
*
pbuf
)
*
pbuf
++
=
0
;
int
rstart
=
0
,
rend
=
0
;
if
(
!
range
)
sscanf
(
pos
,
"%d-%d"
,
&
rstart
,
&
rend
);
++
cpusAvailable
;
cpusAvailable
+=
rend
-
rstart
+
1
;
else
{
int
rstart
=
0
,
rend
=
0
;
sscanf
(
pos
,
"%d-%d"
,
&
rstart
,
&
rend
);
cpusAvailable
+=
rend
-
rstart
+
1
;
}
}
}
}
return
cpusAvailable
?
cpusAvailable
:
1
;
return
cpusAvailable
?
cpusAvailable
:
1
;
}
}
int
DetectKnownPlatforms
()
int
DetectKnownPlatforms
()
...
@@ -165,20 +165,20 @@ int DetectKnownPlatforms()
...
@@ -165,20 +165,20 @@ int DetectKnownPlatforms()
if
(
3
==
tegra_status
)
if
(
3
==
tegra_status
)
{
{
return
PLATFORM_TEGRA3
;
return
PLATFORM_TEGRA3
;
}
}
else
else
{
{
return
PLATFORM_UNKNOWN
;
return
PLATFORM_UNKNOWN
;
}
}
// NOTE: Uncomment when all Tegras will be supported
// NOTE: Uncomment when all Tegras will be supported
/*if (tegra_status > 0)
/*if (tegra_status > 0)
{
*
{
return PLATFORM_TEGRA + tegra_status - 1;
*
return PLATFORM_TEGRA + tegra_status - 1;
}
}
else
else
{
{
return PLATFORM_UNKNOWN;
return PLATFORM_UNKNOWN;
}*/
}*/
}
}
\ No newline at end of file
android/service/engine/jni/BinderComponent/OpenCVEngine.cpp
View file @
293063ee
...
@@ -42,31 +42,31 @@ std::string OpenCVEngine::NormalizeVersionString(std::string version)
...
@@ -42,31 +42,31 @@ std::string OpenCVEngine::NormalizeVersionString(std::string version)
if
(
version
.
empty
())
if
(
version
.
empty
())
{
{
return
result
;
return
result
;
}
}
if
((
'a'
==
version
[
version
.
size
()
-
1
])
||
(
'b'
==
version
[
version
.
size
()
-
1
]))
if
((
'a'
==
version
[
version
.
size
()
-
1
])
||
(
'b'
==
version
[
version
.
size
()
-
1
]))
{
{
suffix
=
version
[
version
.
size
()
-
1
];
suffix
=
version
[
version
.
size
()
-
1
];
version
.
erase
(
version
.
size
()
-
1
);
version
.
erase
(
version
.
size
()
-
1
);
}
}
std
::
vector
<
std
::
string
>
parts
=
SplitStringVector
(
version
,
'.'
);
std
::
vector
<
std
::
string
>
parts
=
SplitStringVector
(
version
,
'.'
);
if
(
parts
.
size
()
>=
2
)
if
(
parts
.
size
()
>=
2
)
{
{
if
(
parts
.
size
()
>=
3
)
if
(
parts
.
size
()
>=
3
)
{
{
result
=
parts
[
0
]
+
parts
[
1
]
+
parts
[
2
]
+
suffix
;
result
=
parts
[
0
]
+
parts
[
1
]
+
parts
[
2
]
+
suffix
;
if
(
!
ValidateVersionString
(
result
))
if
(
!
ValidateVersionString
(
result
))
result
=
""
;
result
=
""
;
}
}
else
else
{
{
result
=
parts
[
0
]
+
parts
[
1
]
+
"0"
+
suffix
;
result
=
parts
[
0
]
+
parts
[
1
]
+
"0"
+
suffix
;
if
(
!
ValidateVersionString
(
result
))
if
(
!
ValidateVersionString
(
result
))
result
=
""
;
result
=
""
;
}
}
}
}
return
result
;
return
result
;
...
@@ -95,19 +95,19 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
...
@@ -95,19 +95,19 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
if
(
!
norm_version
.
empty
())
if
(
!
norm_version
.
empty
())
{
{
path
=
PackageManager
->
GetPackagePathByVersion
(
norm_version
,
Platform
,
CpuID
);
path
=
PackageManager
->
GetPackagePathByVersion
(
norm_version
,
Platform
,
CpuID
);
if
(
path
.
empty
())
if
(
path
.
empty
())
{
{
LOGI
(
"Package OpenCV of version %s is not installed. Try to install it :)"
,
norm_version
.
c_str
());
LOGI
(
"Package OpenCV of version %s is not installed. Try to install it :)"
,
norm_version
.
c_str
());
}
}
else
else
{
{
FixPermissions
(
path
);
FixPermissions
(
path
);
}
}
}
}
else
else
{
{
LOGE
(
"OpenCV version
\"
%s
\"
(%s) is not supported"
,
String8
(
version
).
string
(),
norm_version
.
c_str
());
LOGE
(
"OpenCV version
\"
%s
\"
(%s) is not supported"
,
String8
(
version
).
string
(),
norm_version
.
c_str
());
}
}
return
String16
(
path
.
c_str
());
return
String16
(
path
.
c_str
());
...
@@ -122,46 +122,46 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
...
@@ -122,46 +122,46 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
if
(
!
norm_version
.
empty
())
if
(
!
norm_version
.
empty
())
{
{
std
::
string
tmp
=
PackageManager
->
GetPackagePathByVersion
(
norm_version
,
Platform
,
CpuID
);
std
::
string
tmp
=
PackageManager
->
GetPackagePathByVersion
(
norm_version
,
Platform
,
CpuID
);
if
(
!
tmp
.
empty
())
if
(
!
tmp
.
empty
())
{
tmp
+=
(
std
::
string
(
"/"
)
+
LIB_OPENCV_INFO_NAME
);
LOGD
(
"Trying to load info library
\"
%s
\"
"
,
tmp
.
c_str
());
void
*
handle
;
char
*
(
*
info_func
)();
handle
=
dlopen
(
tmp
.
c_str
(),
RTLD_LAZY
);
if
(
handle
)
{
{
const
char
*
error
;
tmp
+=
(
std
::
string
(
"/"
)
+
LIB_OPENCV_INFO_NAME
);
dlerror
();
LOGD
(
"Trying to load info library
\"
%s
\"
"
,
tmp
.
c_str
());
*
(
void
**
)
(
&
info_func
)
=
dlsym
(
handle
,
"GetLibraryList"
);
if
((
error
=
dlerror
())
==
NULL
)
void
*
handle
;
{
char
*
(
*
info_func
)();
result
=
String16
((
*
info_func
)());
dlclose
(
handle
);
handle
=
dlopen
(
tmp
.
c_str
(),
RTLD_LAZY
);
if
(
handle
)
{
const
char
*
error
;
dlerror
();
*
(
void
**
)
(
&
info_func
)
=
dlsym
(
handle
,
"GetLibraryList"
);
if
((
error
=
dlerror
())
==
NULL
)
{
result
=
String16
((
*
info_func
)());
dlclose
(
handle
);
}
else
{
LOGE
(
"Library loading error:
\"
%s
\"
"
,
error
);
}
}
else
{
LOGI
(
"Info library not found in package"
);
}
}
}
else
else
{
{
LOGE
(
"Library loading error:
\"
%s
\"
"
,
error
);
LOGI
(
"Package OpenCV of version %s is not installed. Try to install it :)"
,
norm_version
.
c_str
());
}
}
}
else
{
LOGI
(
"Info library not found in package"
);
}
}
else
{
LOGI
(
"Package OpenCV of version %s is not installed. Try to install it :)"
,
norm_version
.
c_str
());
}
}
}
else
else
{
{
LOGE
(
"OpenCV version
\"
%s
\"
is not supported"
,
norm_version
.
c_str
());
LOGE
(
"OpenCV version
\"
%s
\"
is not supported"
,
norm_version
.
c_str
());
}
}
return
result
;
return
result
;
...
@@ -173,26 +173,18 @@ bool OpenCVEngine::InstallVersion(android::String16 version)
...
@@ -173,26 +173,18 @@ bool OpenCVEngine::InstallVersion(android::String16 version)
std
::
string
norm_version
;
std
::
string
norm_version
;
bool
result
=
false
;
bool
result
=
false
;
LOGD
(
"OpenCVEngine::InstallVersion() begin"
);
norm_version
=
NormalizeVersionString
(
std_version
);
norm_version
=
NormalizeVersionString
(
std_version
);
if
(
!
norm_version
.
empty
())
if
(
!
norm_version
.
empty
())
{
LOGD
(
"OpenCVEngine::InstallVersion() begin"
);
if
(
!
PackageManager
->
CheckVersionInstalled
(
norm_version
,
Platform
,
CpuID
))
{
{
LOGD
(
"PackageManager->InstallVersion call"
);
LOGD
(
"PackageManager->InstallVersion call"
);
result
=
PackageManager
->
InstallVersion
(
norm_version
,
Platform
,
CpuID
);
result
=
PackageManager
->
InstallVersion
(
norm_version
,
Platform
,
CpuID
);
}
}
else
else
{
{
LOGI
(
"Package OpenCV of version %s is already installed. Skiped."
,
norm_version
.
c_str
());
LOGE
(
"OpenCV version
\"
%s
\"
is not supported"
,
norm_version
.
c_str
());
result
=
true
;
}
}
else
{
LOGE
(
"OpenCV version
\"
%s
\"
is not supported"
,
norm_version
.
c_str
());
}
}
LOGD
(
"OpenCVEngine::InstallVersion() end"
);
LOGD
(
"OpenCVEngine::InstallVersion() end"
);
...
@@ -208,16 +200,16 @@ bool OpenCVEngine::FixPermissions(const std::string& path)
...
@@ -208,16 +200,16 @@ bool OpenCVEngine::FixPermissions(const std::string& path)
DIR
*
dir
=
opendir
(
path
.
c_str
());
DIR
*
dir
=
opendir
(
path
.
c_str
());
if
(
!
dir
)
if
(
!
dir
)
{
{
LOGD
(
"Fixing permissions error"
);
LOGD
(
"Fixing permissions error"
);
return
false
;
return
false
;
}
}
dirent
*
files
=
readdir
(
dir
);
dirent
*
files
=
readdir
(
dir
);
while
(
files
)
while
(
files
)
{
{
LOGD
(
"Fix permissions for
\"
%s
\"
"
,
files
->
d_name
);
LOGD
(
"Fix permissions for
\"
%s
\"
"
,
files
->
d_name
);
chmod
((
path
+
std
::
string
(
"/"
)
+
std
::
string
(
files
->
d_name
)).
c_str
(),
S_IRUSR
|
S_IWUSR
|
S_IXUSR
|
S_IRGRP
|
S_IXGRP
|
S_IROTH
|
S_IXOTH
);
chmod
((
path
+
std
::
string
(
"/"
)
+
std
::
string
(
files
->
d_name
)).
c_str
(),
S_IRUSR
|
S_IWUSR
|
S_IXUSR
|
S_IRGRP
|
S_IXGRP
|
S_IROTH
|
S_IXOTH
);
files
=
readdir
(
dir
);
files
=
readdir
(
dir
);
}
}
closedir
(
dir
);
closedir
(
dir
);
...
...
android/service/engine/jni/BinderComponent/ProcReader.cpp
View file @
293063ee
...
@@ -12,18 +12,18 @@ map<string, string> GetCpuInfo()
...
@@ -12,18 +12,18 @@ map<string, string> GetCpuInfo()
f
.
open
(
"/proc/cpuinfo"
);
f
.
open
(
"/proc/cpuinfo"
);
if
(
f
.
is_open
())
if
(
f
.
is_open
())
{
{
while
(
!
f
.
eof
())
while
(
!
f
.
eof
())
{
string
tmp
;
string
key
;
string
value
;
getline
(
f
,
tmp
);
if
(
ParseString
(
tmp
,
key
,
value
))
{
{
result
[
key
]
=
value
;
string
tmp
;
string
key
;
string
value
;
getline
(
f
,
tmp
);
if
(
ParseString
(
tmp
,
key
,
value
))
{
result
[
key
]
=
value
;
}
}
}
}
}
}
f
.
close
();
f
.
close
();
...
...
android/service/engine/jni/BinderComponent/StringUtils.cpp
View file @
293063ee
...
@@ -8,7 +8,7 @@ bool StripString(string& src)
...
@@ -8,7 +8,7 @@ bool StripString(string& src)
if
(
src
.
empty
())
if
(
src
.
empty
())
{
{
return
false
;
return
false
;
}
}
while
((
pos
<
src
.
length
())
&&
(
' '
==
src
[
pos
]))
pos
++
;
while
((
pos
<
src
.
length
())
&&
(
' '
==
src
[
pos
]))
pos
++
;
...
@@ -32,7 +32,7 @@ bool StripString(string& src)
...
@@ -32,7 +32,7 @@ bool StripString(string& src)
bool
ParseString
(
const
string
&
src
,
string
&
key
,
string
&
value
)
bool
ParseString
(
const
string
&
src
,
string
&
key
,
string
&
value
)
{
{
if
(
src
.
empty
())
if
(
src
.
empty
())
return
false
;
return
false
;
// find seporator ":"
// find seporator ":"
size_t
seporator_pos
=
src
.
find
(
":"
);
size_t
seporator_pos
=
src
.
find
(
":"
);
...
@@ -52,20 +52,19 @@ bool ParseString(const string& src, string& key, string& value)
...
@@ -52,20 +52,19 @@ bool ParseString(const string& src, string& key, string& value)
set
<
string
>
SplitString
(
const
string
&
src
,
const
char
seporator
)
set
<
string
>
SplitString
(
const
string
&
src
,
const
char
seporator
)
{
{
set
<
string
>
result
;
set
<
string
>
result
;
if
(
!
src
.
empty
())
if
(
!
src
.
empty
())
{
{
size_t
seporator_pos
;
size_t
seporator_pos
;
size_t
prev_pos
=
0
;
size_t
prev_pos
=
0
;
do
do
{
{
seporator_pos
=
src
.
find
(
seporator
,
prev_pos
);
seporator_pos
=
src
.
find
(
seporator
,
prev_pos
);
result
.
insert
(
src
.
substr
(
prev_pos
,
seporator_pos
-
prev_pos
));
result
.
insert
(
src
.
substr
(
prev_pos
,
seporator_pos
-
prev_pos
));
prev_pos
=
seporator_pos
+
1
;
prev_pos
=
seporator_pos
+
1
;
}
}
while
(
string
::
npos
!=
seporator_pos
);
while
(
string
::
npos
!=
seporator_pos
);
}
}
return
result
;
return
result
;
...
@@ -77,16 +76,16 @@ vector<string> SplitStringVector(const string& src, const char seporator)
...
@@ -77,16 +76,16 @@ vector<string> SplitStringVector(const string& src, const char seporator)
if
(
!
src
.
empty
())
if
(
!
src
.
empty
())
{
{
size_t
seporator_pos
;
size_t
seporator_pos
;
size_t
prev_pos
=
0
;
size_t
prev_pos
=
0
;
do
do
{
{
seporator_pos
=
src
.
find
(
seporator
,
prev_pos
);
seporator_pos
=
src
.
find
(
seporator
,
prev_pos
);
string
tmp
=
src
.
substr
(
prev_pos
,
seporator_pos
-
prev_pos
);
string
tmp
=
src
.
substr
(
prev_pos
,
seporator_pos
-
prev_pos
);
result
.
push_back
(
tmp
);
result
.
push_back
(
tmp
);
prev_pos
=
seporator_pos
+
1
;
prev_pos
=
seporator_pos
+
1
;
}
}
while
(
string
::
npos
!=
seporator_pos
);
while
(
string
::
npos
!=
seporator_pos
);
}
}
return
result
;
return
result
;
...
...
android/service/engine/jni/BinderComponent/TegraDetector.cpp
View file @
293063ee
...
@@ -15,38 +15,38 @@ int DetectTegra()
...
@@ -15,38 +15,38 @@ int DetectTegra()
gzFile
kernelConfig
=
gzopen
(
KERNEL_CONFIG
,
"r"
);
gzFile
kernelConfig
=
gzopen
(
KERNEL_CONFIG
,
"r"
);
if
(
kernelConfig
!=
0
)
if
(
kernelConfig
!=
0
)
{
{
char
tmpbuf
[
KERNEL_CONFIG_MAX_LINE_WIDTH
];
char
tmpbuf
[
KERNEL_CONFIG_MAX_LINE_WIDTH
];
const
char
*
tegra_config
=
KERNEL_CONFIG_TEGRA_MAGIC
;
const
char
*
tegra_config
=
KERNEL_CONFIG_TEGRA_MAGIC
;
const
char
*
tegra2_config
=
KERNEL_CONFIG_TEGRA2_MAGIC
;
const
char
*
tegra2_config
=
KERNEL_CONFIG_TEGRA2_MAGIC
;
const
char
*
tegra3_config
=
KERNEL_CONFIG_TEGRA3_MAGIC
;
const
char
*
tegra3_config
=
KERNEL_CONFIG_TEGRA3_MAGIC
;
int
len
=
strlen
(
tegra_config
);
int
len
=
strlen
(
tegra_config
);
int
len2
=
strlen
(
tegra2_config
);
int
len2
=
strlen
(
tegra2_config
);
int
len3
=
strlen
(
tegra3_config
);
int
len3
=
strlen
(
tegra3_config
);
while
(
0
!=
gzgets
(
kernelConfig
,
tmpbuf
,
KERNEL_CONFIG_MAX_LINE_WIDTH
))
while
(
0
!=
gzgets
(
kernelConfig
,
tmpbuf
,
KERNEL_CONFIG_MAX_LINE_WIDTH
))
{
if
(
0
==
strncmp
(
tmpbuf
,
tegra_config
,
len
))
{
{
result
=
1
;
if
(
0
==
strncmp
(
tmpbuf
,
tegra_config
,
len
))
}
{
result
=
1
;
}
if
(
0
==
strncmp
(
tmpbuf
,
tegra2_config
,
len2
))
if
(
0
==
strncmp
(
tmpbuf
,
tegra2_config
,
len2
))
{
{
result
=
2
;
result
=
2
;
break
;
break
;
}
}
if
(
0
==
strncmp
(
tmpbuf
,
tegra3_config
,
len3
))
if
(
0
==
strncmp
(
tmpbuf
,
tegra3_config
,
len3
))
{
{
result
=
3
;
result
=
3
;
break
;
break
;
}
}
}
}
gzclose
(
kernelConfig
);
gzclose
(
kernelConfig
);
}
}
else
else
{
{
result
=
TEGRA_DETECTOR_ERROR
;
result
=
TEGRA_DETECTOR_ERROR
;
}
}
return
result
;
return
result
;
...
...
android/service/engine/jni/JNIWrapper/JavaBasedPackageManager.cpp
View file @
293063ee
...
@@ -8,8 +8,8 @@
...
@@ -8,8 +8,8 @@
using
namespace
std
;
using
namespace
std
;
JavaBasedPackageManager
::
JavaBasedPackageManager
(
JavaVM
*
JavaMashine
,
jobject
MarketConnector
)
:
JavaBasedPackageManager
::
JavaBasedPackageManager
(
JavaVM
*
JavaMashine
,
jobject
MarketConnector
)
:
JavaContext
(
JavaMashine
),
JavaContext
(
JavaMashine
),
JavaPackageManager
(
MarketConnector
)
JavaPackageManager
(
MarketConnector
)
{
{
assert
(
JavaContext
);
assert
(
JavaContext
);
assert
(
JavaPackageManager
);
assert
(
JavaPackageManager
);
...
@@ -24,23 +24,23 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
...
@@ -24,23 +24,23 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
}
}
LOGD
(
"GetObjectClass call
\n
"
);
LOGD
(
"GetObjectClass call
\n
"
);
jclass
jclazz
=
jenv
->
GetObjectClass
(
JavaPackageManager
);
jclass
jclazz
=
jenv
->
GetObjectClass
(
JavaPackageManager
);
if
(
!
jclazz
)
if
(
!
jclazz
)
{
{
LOGE
(
"MarketConnector class was not found!"
);
LOGE
(
"MarketConnector class was not found!"
);
return
false
;
return
false
;
}
}
LOGD
(
"GetMethodID call
\n
"
);
LOGD
(
"GetMethodID call
\n
"
);
jmethodID
jmethod
=
jenv
->
GetMethodID
(
jclazz
,
"InstallAppFromMarket"
,
"(Ljava/lang/String;)Z"
);
jmethodID
jmethod
=
jenv
->
GetMethodID
(
jclazz
,
"InstallAppFromMarket"
,
"(Ljava/lang/String;)Z"
);
if
(
!
jmethod
)
if
(
!
jmethod
)
{
{
LOGE
(
"MarketConnector::GetAppFormMarket method was not found!"
);
LOGE
(
"MarketConnector::GetAppFormMarket method was not found!"
);
return
false
;
return
false
;
}
}
LOGD
(
"Calling java package manager with package name %s
\n
"
,
package
.
GetFullName
().
c_str
());
LOGD
(
"Calling java package manager with package name %s
\n
"
,
package
.
GetFullName
().
c_str
());
...
@@ -50,7 +50,7 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
...
@@ -50,7 +50,7 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
DetachCurrentThread
();
JavaContext
->
DetachCurrentThread
();
}
}
LOGD
(
"JavaBasedPackageManager::InstallPackage() end
\n
"
);
LOGD
(
"JavaBasedPackageManager::InstallPackage() end
\n
"
);
...
@@ -69,23 +69,23 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
...
@@ -69,23 +69,23 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
}
}
LOGD
(
"GetObjectClass call"
);
LOGD
(
"GetObjectClass call"
);
jclass
jclazz
=
jenv
->
GetObjectClass
(
JavaPackageManager
);
jclass
jclazz
=
jenv
->
GetObjectClass
(
JavaPackageManager
);
if
(
!
jclazz
)
if
(
!
jclazz
)
{
{
LOGE
(
"MarketConnector class was not found!"
);
LOGE
(
"MarketConnector class was not found!"
);
return
result
;
return
result
;
}
}
LOGD
(
"GetMethodID call"
);
LOGD
(
"GetMethodID call"
);
jmethodID
jmethod
=
jenv
->
GetMethodID
(
jclazz
,
"GetInstalledOpenCVPackages"
,
"()[Landroid/content/pm/PackageInfo;"
);
jmethodID
jmethod
=
jenv
->
GetMethodID
(
jclazz
,
"GetInstalledOpenCVPackages"
,
"()[Landroid/content/pm/PackageInfo;"
);
if
(
!
jmethod
)
if
(
!
jmethod
)
{
{
LOGE
(
"MarketConnector::GetInstalledOpenCVPackages method was not found!"
);
LOGE
(
"MarketConnector::GetInstalledOpenCVPackages method was not found!"
);
return
result
;
return
result
;
}
}
LOGD
(
"Java package manager call"
);
LOGD
(
"Java package manager call"
);
...
@@ -98,19 +98,19 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
...
@@ -98,19 +98,19 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
for
(
jsize
i
=
0
;
i
<
size
;
i
++
)
for
(
jsize
i
=
0
;
i
<
size
;
i
++
)
{
{
jobject
jtmp
=
jenv
->
GetObjectArrayElement
(
jpkgs
,
i
);
jobject
jtmp
=
jenv
->
GetObjectArrayElement
(
jpkgs
,
i
);
PackageInfo
tmp
=
ConvertPackageFromJava
(
jtmp
,
jenv
);
PackageInfo
tmp
=
ConvertPackageFromJava
(
jtmp
,
jenv
);
jenv
->
DeleteLocalRef
(
jtmp
);
jenv
->
DeleteLocalRef
(
jtmp
);
if
(
tmp
.
IsValid
())
if
(
tmp
.
IsValid
())
result
.
push_back
(
tmp
);
result
.
push_back
(
tmp
);
}
}
jenv
->
DeleteLocalRef
(
jpkgs
);
jenv
->
DeleteLocalRef
(
jpkgs
);
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
DetachCurrentThread
();
JavaContext
->
DetachCurrentThread
();
}
}
LOGD
(
"JavaBasedPackageManager::GetInstalledPackages() end"
);
LOGD
(
"JavaBasedPackageManager::GetInstalledPackages() end"
);
...
@@ -140,20 +140,20 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI
...
@@ -140,20 +140,20 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI
jint
api_level
=
jenv
->
GetStaticIntField
(
jclazz
,
jfield
);
jint
api_level
=
jenv
->
GetStaticIntField
(
jclazz
,
jfield
);
if
(
api_level
>
8
)
if
(
api_level
>
8
)
{
{
jclazz
=
jenv
->
GetObjectClass
(
package
);
jclazz
=
jenv
->
GetObjectClass
(
package
);
jfield
=
jenv
->
GetFieldID
(
jclazz
,
"applicationInfo"
,
"Landroid/content/pm/ApplicationInfo;"
);
jfield
=
jenv
->
GetFieldID
(
jclazz
,
"applicationInfo"
,
"Landroid/content/pm/ApplicationInfo;"
);
jobject
japp_info
=
jenv
->
GetObjectField
(
package
,
jfield
);
jobject
japp_info
=
jenv
->
GetObjectField
(
package
,
jfield
);
jclazz
=
jenv
->
GetObjectClass
(
japp_info
);
jclazz
=
jenv
->
GetObjectClass
(
japp_info
);
jfield
=
jenv
->
GetFieldID
(
jclazz
,
"nativeLibraryDir"
,
"Ljava/lang/String;"
);
jfield
=
jenv
->
GetFieldID
(
jclazz
,
"nativeLibraryDir"
,
"Ljava/lang/String;"
);
jstring
jpathobj
=
static_cast
<
jstring
>
(
jenv
->
GetObjectField
(
japp_info
,
jfield
));
jstring
jpathobj
=
static_cast
<
jstring
>
(
jenv
->
GetObjectField
(
japp_info
,
jfield
));
const
char
*
jpathstr
=
jenv
->
GetStringUTFChars
(
jpathobj
,
NULL
);
const
char
*
jpathstr
=
jenv
->
GetStringUTFChars
(
jpathobj
,
NULL
);
path
=
string
(
jpathstr
);
path
=
string
(
jpathstr
);
jenv
->
ReleaseStringUTFChars
(
jpathobj
,
jpathstr
);
jenv
->
ReleaseStringUTFChars
(
jpathobj
,
jpathstr
);
jenv
->
DeleteLocalRef
(
jpathobj
);
jenv
->
DeleteLocalRef
(
jpathobj
);
}
}
else
else
{
{
path
=
"/data/data/"
+
name
+
"/lib"
;
path
=
"/data/data/"
+
name
+
"/lib"
;
}
}
return
PackageInfo
(
name
,
path
,
verison
);
return
PackageInfo
(
name
,
path
,
verison
);
...
@@ -170,14 +170,14 @@ JavaBasedPackageManager::~JavaBasedPackageManager()
...
@@ -170,14 +170,14 @@ JavaBasedPackageManager::~JavaBasedPackageManager()
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
self_attached
=
(
JNI_EDETACHED
==
JavaContext
->
GetEnv
((
void
**
)
&
jenv
,
JNI_VERSION_1_6
));
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
JavaContext
->
AttachCurrentThread
(
&
jenv
,
NULL
);
}
}
jenv
->
DeleteGlobalRef
(
JavaPackageManager
);
jenv
->
DeleteGlobalRef
(
JavaPackageManager
);
if
(
self_attached
)
if
(
self_attached
)
{
{
JavaContext
->
DetachCurrentThread
();
JavaContext
->
DetachCurrentThread
();
}
}
LOGD
(
"JavaBasedPackageManager::~JavaBasedPackageManager() end"
);
LOGD
(
"JavaBasedPackageManager::~JavaBasedPackageManager() end"
);
}
}
android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp
View file @
293063ee
...
@@ -20,11 +20,11 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv*
...
@@ -20,11 +20,11 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv*
LOGI
(
"Creating new component"
);
LOGI
(
"Creating new component"
);
if
(
NULL
!=
OpenCVEngineBinder
.
get
())
if
(
NULL
!=
OpenCVEngineBinder
.
get
())
{
{
LOGI
(
"New component created successfully"
);
LOGI
(
"New component created successfully"
);
}
}
else
else
{
{
LOGE
(
"OpenCV Engine component was not created!"
);
LOGE
(
"OpenCV Engine component was not created!"
);
}
}
return
javaObjectForIBinder
(
env
,
OpenCVEngineBinder
);
return
javaObjectForIBinder
(
env
,
OpenCVEngineBinder
);
...
@@ -36,25 +36,25 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* e
...
@@ -36,25 +36,25 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* e
if
(
NULL
==
PackageManager
)
if
(
NULL
==
PackageManager
)
{
{
JavaVM
*
jvm
;
JavaVM
*
jvm
;
env
->
GetJavaVM
(
&
jvm
);
env
->
GetJavaVM
(
&
jvm
);
PackageManager
=
new
JavaBasedPackageManager
(
jvm
,
env
->
NewGlobalRef
(
market
));
PackageManager
=
new
JavaBasedPackageManager
(
jvm
,
env
->
NewGlobalRef
(
market
));
}
}
if
(
PackageManager
)
if
(
PackageManager
)
{
{
if
(
!
OpenCVEngineBinder
.
get
())
if
(
!
OpenCVEngineBinder
.
get
())
{
{
OpenCVEngineBinder
=
new
OpenCVEngine
(
PackageManager
);
OpenCVEngineBinder
=
new
OpenCVEngine
(
PackageManager
);
return
(
NULL
!=
OpenCVEngineBinder
.
get
());
return
(
NULL
!=
OpenCVEngineBinder
.
get
());
}
}
else
else
{
{
return
true
;
return
true
;
}
}
}
}
else
else
{
{
return
false
;
return
false
;
}
}
}
}
...
@@ -67,4 +67,3 @@ JNIEXPORT void JNICALL Java_org_opencv_engine_BinderConnector_Final(JNIEnv *, jo
...
@@ -67,4 +67,3 @@ JNIEXPORT void JNICALL Java_org_opencv_engine_BinderConnector_Final(JNIEnv *, jo
delete
PackageManager
;
delete
PackageManager
;
PackageManager
=
NULL
;
PackageManager
=
NULL
;
}
}
android/service/engine/jni/NativeClient/ClientMain.cpp
View file @
293063ee
...
@@ -25,10 +25,10 @@ int main(int argc, char *argv[])
...
@@ -25,10 +25,10 @@ int main(int argc, char *argv[])
LOGI
(
"Trying to contect to service"
);
LOGI
(
"Trying to contect to service"
);
do
{
do
{
EngineService
=
ServiceManager
->
getService
(
IOpenCVEngine
::
descriptor
);
EngineService
=
ServiceManager
->
getService
(
IOpenCVEngine
::
descriptor
);
if
(
EngineService
!=
0
)
break
;
if
(
EngineService
!=
0
)
break
;
LOGW
(
"OpenCVEngine not published, waiting..."
);
LOGW
(
"OpenCVEngine not published, waiting..."
);
usleep
(
500000
);
// 0.5 s
usleep
(
500000
);
// 0.5 s
}
while
(
true
);
}
while
(
true
);
LOGI
(
"Connection established"
);
LOGI
(
"Connection established"
);
...
...
android/service/engine/jni/NativeService/CommonPackageManager.cpp
View file @
293063ee
...
@@ -18,9 +18,9 @@ set<string> CommonPackageManager::GetInstalledVersions()
...
@@ -18,9 +18,9 @@ set<string> CommonPackageManager::GetInstalledVersions()
for
(
vector
<
PackageInfo
>::
const_iterator
it
=
installed_packages
.
begin
();
it
!=
installed_packages
.
end
();
++
it
)
for
(
vector
<
PackageInfo
>::
const_iterator
it
=
installed_packages
.
begin
();
it
!=
installed_packages
.
end
();
++
it
)
{
{
string
version
=
it
->
GetVersion
();
string
version
=
it
->
GetVersion
();
assert
(
!
version
.
empty
());
assert
(
!
version
.
empty
());
result
.
insert
(
version
);
result
.
insert
(
version
);
}
}
return
result
;
return
result
;
...
@@ -36,12 +36,13 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int
...
@@ -36,12 +36,13 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int
for
(
vector
<
PackageInfo
>::
const_iterator
it
=
packages
.
begin
();
it
!=
packages
.
end
();
++
it
)
for
(
vector
<
PackageInfo
>::
const_iterator
it
=
packages
.
begin
();
it
!=
packages
.
end
();
++
it
)
{
{
LOGD
(
"Found package:
\"
%s
\"
"
,
it
->
GetFullName
().
c_str
());
LOGD
(
"Found package:
\"
%s
\"
"
,
it
->
GetFullName
().
c_str
());
}
}
if
(
!
packages
.
empty
())
if
(
!
packages
.
empty
())
{
{
result
=
(
packages
.
end
()
!=
find
(
packages
.
begin
(),
packages
.
end
(),
target_package
));
vector
<
PackageInfo
>::
const_iterator
it
=
find
(
packages
.
begin
(),
packages
.
end
(),
target_package
);
result
=
(
it
!=
packages
.
end
());
}
}
LOGD
(
"CommonPackageManager::CheckVersionInstalled() end"
);
LOGD
(
"CommonPackageManager::CheckVersionInstalled() end"
);
return
result
;
return
result
;
...
@@ -63,66 +64,66 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
...
@@ -63,66 +64,66 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
for
(
vector
<
PackageInfo
>::
iterator
it
=
all_packages
.
begin
();
it
!=
all_packages
.
end
();
++
it
)
for
(
vector
<
PackageInfo
>::
iterator
it
=
all_packages
.
begin
();
it
!=
all_packages
.
end
();
++
it
)
{
{
LOGD
(
"Check version
\"
%s
\"
compatibility with
\"
%s
\"\n
"
,
version
.
c_str
(),
it
->
GetVersion
().
c_str
());
LOGD
(
"Check version
\"
%s
\"
compatibility with
\"
%s
\"\n
"
,
version
.
c_str
(),
it
->
GetVersion
().
c_str
());
if
(
IsVersionCompatible
(
version
,
it
->
GetVersion
()))
if
(
IsVersionCompatible
(
version
,
it
->
GetVersion
()))
{
LOGD
(
"Compatible"
);
packages
.
push_back
(
*
it
);
}
else
{
LOGD
(
"NOT Compatible"
);
}
}
if
(
!
packages
.
empty
())
{
vector
<
PackageInfo
>::
iterator
found
=
find
(
packages
.
begin
(),
packages
.
end
(),
target_package
);
if
(
packages
.
end
()
!=
found
)
{
result
=
found
->
GetInstalationPath
();
}
else
{
int
OptRating
=
-
1
;
std
::
vector
<
std
::
pair
<
int
,
int
>
>&
group
=
CommonPackageManager
::
ArmRating
;
if
((
cpu_id
&
ARCH_X86
)
||
(
cpu_id
&
ARCH_X64
))
group
=
CommonPackageManager
::
IntelRating
;
int
HardwareRating
=
GetHardwareRating
(
platform
,
cpu_id
,
group
);
LOGD
(
"Current hardware platform %d, %d"
,
platform
,
cpu_id
);
if
(
-
1
==
HardwareRating
)
{
{
LOGE
(
"Cannot calculate rating for current hardware platform!"
);
LOGD
(
"Compatible"
);
packages
.
push_back
(
*
it
);
}
}
else
else
{
{
for
(
vector
<
PackageInfo
>::
iterator
it
=
packages
.
begin
();
it
!=
packages
.
end
();
++
it
)
LOGD
(
"NOT Compatible"
);
{
int
PackageRating
=
GetHardwareRating
(
it
->
GetPlatform
(),
it
->
GetCpuID
(),
group
);
if
(
PackageRating
>=
0
)
{
if
((
PackageRating
<=
HardwareRating
)
&&
(
PackageRating
>
OptRating
))
{
OptRating
=
PackageRating
;
found
=
it
;
}
}
}
}
}
if
((
-
1
!=
OptRating
)
&&
(
packages
.
end
()
!=
found
))
if
(
!
packages
.
empty
())
{
vector
<
PackageInfo
>::
iterator
found
=
find
(
packages
.
begin
(),
packages
.
end
(),
target_package
);
if
(
packages
.
end
()
!=
found
)
{
{
result
=
found
->
GetInstalationPath
();
result
=
found
->
GetInstalationPath
();
}
}
else
else
{
{
LOGI
(
"Found package is incompatible with current hardware platform"
);
int
OptRating
=
-
1
;
}
std
::
vector
<
std
::
pair
<
int
,
int
>
>&
group
=
CommonPackageManager
::
ArmRating
;
if
((
cpu_id
&
ARCH_X86
)
||
(
cpu_id
&
ARCH_X64
))
group
=
CommonPackageManager
::
IntelRating
;
int
HardwareRating
=
GetHardwareRating
(
platform
,
cpu_id
,
group
);
LOGD
(
"Current hardware platform %d, %d"
,
platform
,
cpu_id
);
if
(
-
1
==
HardwareRating
)
{
LOGE
(
"Cannot calculate rating for current hardware platform!"
);
}
else
{
for
(
vector
<
PackageInfo
>::
iterator
it
=
packages
.
begin
();
it
!=
packages
.
end
();
++
it
)
{
int
PackageRating
=
GetHardwareRating
(
it
->
GetPlatform
(),
it
->
GetCpuID
(),
group
);
if
(
PackageRating
>=
0
)
{
if
((
PackageRating
<=
HardwareRating
)
&&
(
PackageRating
>
OptRating
))
{
OptRating
=
PackageRating
;
found
=
it
;
}
}
}
if
((
-
1
!=
OptRating
)
&&
(
packages
.
end
()
!=
found
))
{
result
=
found
->
GetInstalationPath
();
}
else
{
LOGI
(
"Found package is incompatible with current hardware platform"
);
}
}
}
}
}
}
}
return
result
;
return
result
;
}
}
...
...
android/service/engine/jni/NativeService/PackageInfo.cpp
View file @
293063ee
This diff is collapsed.
Click to expand it.
android/service/engine/jni/Tests/OpenCVEngineTest.cpp
View file @
293063ee
...
@@ -126,7 +126,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
...
@@ -126,7 +126,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
EXPECT_EQ
(
0
,
result
.
size
());
EXPECT_EQ
(
0
,
result
.
size
());
}
}
#else
#else
// armeabi
TEST
(
OpenCVEngineTest
,
GetPathForExecHWExistVersion
)
TEST
(
OpenCVEngineTest
,
GetPathForExecHWExistVersion
)
{
{
sp
<
IOpenCVEngine
>
Engine
=
InitConnect
();
sp
<
IOpenCVEngine
>
Engine
=
InitConnect
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment