优化电源管理

MQTTtest
Matthew 9 months ago
parent 825cb2e909
commit 5becb8b644

@ -818,7 +818,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPublicKeyFile(
const char *md5Str = env->GetStringUTFChars(md5, 0);
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -831,7 +831,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPublicKeyFile(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
env->ReleaseStringUTFChars(md5, md5Str);
@ -853,7 +853,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPublicKey(
return JNI_FALSE;
}
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -868,7 +868,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPublicKey(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
return res ? JNI_TRUE : JNI_FALSE;
#else
@ -889,7 +889,8 @@ Java_com_xypower_mpapp_MicroPhotoService_importPrivateKey(
return JNI_FALSE;
}
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -904,7 +905,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPrivateKey(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
return res ? JNI_TRUE : JNI_FALSE;
#else
@ -926,7 +927,7 @@ Java_com_xypower_mpapp_MicroPhotoService_genKeys(
jclass cls, jint index) {
#ifdef USING_NRSEC
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
const char *path = NRSEC_PATH;
@ -940,7 +941,7 @@ Java_com_xypower_mpapp_MicroPhotoService_genKeys(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
return res ? JNI_TRUE : JNI_FALSE;
#else
@ -955,7 +956,7 @@ Java_com_xypower_mpapp_MicroPhotoService_querySecVersion(
std::string version;
#ifdef USING_NRSEC
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
const char *path = NRSEC_PATH;
@ -969,7 +970,7 @@ Java_com_xypower_mpapp_MicroPhotoService_querySecVersion(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
#endif
return env->NewStringUTF(version.c_str());
}
@ -985,7 +986,7 @@ Java_com_xypower_mpapp_MicroPhotoService_genCertRequest(
}
const char *path = NRSEC_PATH;
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
uint8_t output[1024] = { 0 };
@ -1002,6 +1003,9 @@ Java_com_xypower_mpapp_MicroPhotoService_genCertRequest(
env->ReleaseStringUTFChars(subject, subjectStr);
}
GpioControl::setSpiPower(false);
CPhoneDevice::TurnOffCameraPower(NULL);
if (res)
{
const char* outputPathStr = env->GetStringUTFChars(outputPath, 0);
@ -1039,7 +1043,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPrivateKeyFile(
const char *path = NRSEC_PATH;
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -1051,7 +1055,7 @@ Java_com_xypower_mpapp_MicroPhotoService_importPrivateKeyFile(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
// const char *md5Str = env->GetStringUTFChars(md5, 0);
// env->ReleaseStringUTFChars(md5, md5Str);
@ -1078,7 +1082,7 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPublicKeyFile(
uint8_t len = 0;
std::vector<unsigned char> data(64, 0);
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -1090,7 +1094,7 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPublicKeyFile(
}
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
if (res)
{
@ -1117,7 +1121,7 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPrivateFile(
const char *path = NRSEC_PATH;
GpioControl::setCam3V3Enable(true);
CPhoneDevice::TurnOnCameraPower(NULL);
GpioControl::setSpiPower(true);
NrsecPort nrsec;
@ -1133,7 +1137,7 @@ Java_com_xypower_mpapp_MicroPhotoService_exportPrivateFile(
nrsec.Close();
GpioControl::setSpiPower(false);
GpioControl::setCam3V3Enable(false);
CPhoneDevice::TurnOffCameraPower(NULL);
if (res)
{

@ -282,7 +282,11 @@ int32_t CPhoneDevice::CJpegCamera::getOutputFormat() const
return AIMAGE_FORMAT_JPEG;
}
CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPath, unsigned int netId, unsigned int versionCode) : mCameraPowerCount(0), mOtgCount(0), mVersionCode(versionCode)
std::mutex CPhoneDevice::m_powerLocker;
long CPhoneDevice::mCameraPowerCount = 0;
long CPhoneDevice::mOtgCount = 0;
CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPath, unsigned int netId, unsigned int versionCode) : mVersionCode(versionCode)
{
mCamera = NULL;
m_listener = NULL;
@ -1863,18 +1867,18 @@ void CPhoneDevice::UpdatePosition(double lon, double lat, double radius, time_t
void CPhoneDevice::TurnOnCameraPower(JNIEnv* env)
{
m_devLocker.lock();
m_powerLocker.lock();
if (mCameraPowerCount == 0)
{
GpioControl::setCam3V3Enable(true);
}
mCameraPowerCount++;
m_devLocker.unlock();
m_powerLocker.unlock();
}
void CPhoneDevice::TurnOffCameraPower(JNIEnv* env)
{
m_devLocker.lock();
m_powerLocker.lock();
if (mCameraPowerCount > 0)
{
mCameraPowerCount--;
@ -1883,24 +1887,24 @@ void CPhoneDevice::TurnOffCameraPower(JNIEnv* env)
GpioControl::setCam3V3Enable(false);
}
}
m_devLocker.unlock();
m_powerLocker.unlock();
}
void CPhoneDevice::TurnOnOtg(JNIEnv* env)
{
m_devLocker.lock();
m_powerLocker.lock();
if (mOtgCount == 0)
{
ALOGD("setOtgState 1");
GpioControl::setOtgState(true);
}
mOtgCount++;
m_devLocker.unlock();
m_powerLocker.unlock();
}
void CPhoneDevice::TurnOffOtg(JNIEnv* env)
{
m_devLocker.lock();
m_powerLocker.lock();
if (mOtgCount > 0)
{
mOtgCount--;
@ -1910,7 +1914,7 @@ void CPhoneDevice::TurnOffOtg(JNIEnv* env)
GpioControl::setOtgState(false);
}
}
m_devLocker.unlock();
m_powerLocker.unlock();
}
void CPhoneDevice::UpdateSignalLevel(int signalLevel)

@ -231,11 +231,11 @@ public:
}
void UpdateSimcard(const std::string& simcard);
void TurnOnCameraPower(JNIEnv* env);
void TurnOffCameraPower(JNIEnv* env);
static void TurnOnCameraPower(JNIEnv* env);
static void TurnOffCameraPower(JNIEnv* env);
void TurnOnOtg(JNIEnv* env);
void TurnOffOtg(JNIEnv* env);
static void TurnOnOtg(JNIEnv* env);
static void TurnOffOtg(JNIEnv* env);
protected:
@ -328,8 +328,9 @@ protected:
time_t mHeartbeatStartTime;
unsigned int mHeartbeatDuration;
long mCameraPowerCount;
long mOtgCount;
static std::mutex m_powerLocker;
static long mCameraPowerCount;
static long mOtgCount;
std::thread m_threadClose;
int m_signalLevel;

Loading…
Cancel
Save