Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
HEV - High Energy Ventilator
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
5
Issues
5
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
HEV - High Energy Ventilator
Commits
ccbe528f
Commit
ccbe528f
authored
Oct 20, 2021
by
Benjamin Mummery
💻
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added upower_22 source
parent
1d3095b1
Pipeline
#2716
failed with stages
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
418 additions
and
0 deletions
+418
-0
Readme.txt
upower_22/Readme.txt
+10
-0
UPower22SdkUserGuide.pdf
upower_22/UPower22SdkUserGuide.pdf
+0
-0
upower22_api.h
upower_22/upower22_api/header/upower22_api.h
+270
-0
libupower22_api.a
upower_22/upower22_api/libupower22_api.a
+0
-0
PowerBoard.bin
upower_22/upower_22/Release/PowerBoard.bin
+0
-0
upower_22
upower_22/upower_22/Release/upower_22
+0
-0
upower_22.cpp
upower_22/upower_22/src/upower_22.cpp
+138
-0
No files found.
upower_22/Readme.txt
0 → 100644
View file @
ccbe528f
1. Install libusb
sudo apt update
sudo apt-get install libusb-1.0-0-dev
2. Build
g++ -O3 -Wall -c upower_22.cpp
g++ -o "upower_22" upower_22.o ../../upower22_api/libupower22_api.a -lusb-1.0
3. Execute
sudo ./upower_22
\ No newline at end of file
upower_22/UPower22SdkUserGuide.pdf
0 → 100644
View file @
ccbe528f
File added
upower_22/upower22_api/header/upower22_api.h
0 → 100644
View file @
ccbe528f
//============================================================================
// Name : upower22_api.h
// Author : JerryLiao
// Version : 0.1
// Date : 2020/10/13
// Copyright : Copyright © 2020 BY Onyx Healthcare Inc.
// Description : UPower pro 22 library header file
//============================================================================
#define OnyxApiStatus int
/**
*
* Onyx SDK status code
*
*/
#define STATUS_SUCCESS 0
#define STATUS_FAILED 1
#define STATUS_INVALID_PARAMETER 2
#define STATUS_NOT_SUPPORT 3
struct
BatteryData
{
unsigned
char
ReportID
;
unsigned
short
BatteryMode
;
unsigned
short
Temperature
;
unsigned
short
Voltage
;
short
Current
;
short
AverageCurrent
;
unsigned
short
RemainPercentage
;
unsigned
short
RemainingCapacity
;
unsigned
short
FullChargeCapacity
;
unsigned
short
AverageTimeToEmpty
;
unsigned
short
AverageTimeToFull
;
short
ChargingCurrent
;
unsigned
short
ChargingVoltage
;
unsigned
short
GaugeStatus
;
unsigned
short
CycleCount
;
unsigned
short
DesignCapacity
;
unsigned
short
DesignVoltage
;
unsigned
short
ManufactureDate
;
char
SerialNumber
[
22
];
unsigned
char
Status
;
// XXL Battery Extend Data
unsigned
short
LogIndex
;
char
FullyChargeDate
[
8
];
unsigned
short
FccThreshold
;
unsigned
short
FccBackup
;
unsigned
short
CycleCountThreshold
;
unsigned
short
LifetimeMaxPackVoltage
;
unsigned
short
LifetimeMinPackVoltage
;
short
LifetimeMaxCurrent
;
short
LifetimeMinCurrent
;
unsigned
short
SmbLedBlink
;
unsigned
short
FullChargeVoltage
;
unsigned
short
DateRecord
;
unsigned
short
TimerRecord
;
unsigned
short
BatteryFirstUseTime
;
unsigned
short
PackMode
;
};
extern
"C"
{
/**
* upowerApiInitialize
*
* @brief Initialize the API
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerApiInitialize
();
/**
* upowerApiUninitialize
*
* @brief Please use this API before close the process
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerApiUninitialize
();
/**
* upowerLogControl
*
* @brief Log function initialization
* It will generate the log file under /tmp/upower_sdk.log
*
* @param bEnable: Enable the setting
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerLogControl
(
bool
bEnable
);
/**
* upowerGetProductName
*
* @brief Get product name
*
* @retval strProduct: String for product name
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetProductName
(
char
*
strProduct
);
/**
* upowerGetFirmwareVersion
*
* @brief Get firmware version
*
* @retval strVersion: String for firmware version
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetFirmwareVersion
(
char
*
strVersion
);
/**
* upowerGetSerialNumber
*
* @brief Get UPower serial number
*
* @retval strSerialNumber: String for serial number
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetSerialNumber
(
char
*
strSerialNumber
);
/**
* upowerSetSerialNumber
*
* @brief Set UPower serial number.
* It takes effect after device reboot
*
* @param strSerialNumber: String for serial number
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerSetSerialNumber
(
char
*
strSerialNumber
);
/**
* upowerRebootDevice
*
* @brief Reboot the device
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerRebootDevice
();
/**
* upowerGetACStatus
*
* @brief Check the AC power is plug in or not
*
* @retval bIsPlugIn: true: plug in, false: plug out
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetACStatus
(
bool
*
bIsPlugIn
);
/**
* upowerGetDCOutVoltage
*
* @brief Get DC output voltage of UPower
*
* @retval nVoltage: Output voltage
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetDCOutVoltage
(
int
*
nVoltage
);
/**
* upowerGetDCOutStatus
*
* @brief Get DC output status of UPower
*
* @retval anStatus[0]: Output voltage select.
* @retval anStatus[1]: DC output cable connection. 1: Connect, 0, Disconnect
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetDCOutStatus
(
int
*
anStatus
);
/**
* upowerGetBoardId
*
* @brief Get Board Id of UPower
*
* @retval nBoardId: Board Id
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetBoardId
(
int
*
nBoardId
);
/**
* upowerGetTotalPercentage
*
* @brief Get total percentage of batteries
*
* @retval nPercentage: Remain total percentage of batteries
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetTotalPercentage
(
int
*
nPercentage
);
/**
* upowerSetLedColor
*
* @brief Set the LED color on UPower
*
* @retval nIndex: Index of LED
* @retval Red: 0~255
* @retval Green: 0~255
* @retval Blue: 0~255
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerSetLedColor
(
int
nIndex
,
int
Red
,
int
Green
,
int
Blue
);
/**
* upowerResetLedColor
*
* @brief Reset the LED to previous status
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerResetLedColor
();
/**
* upowerGetBatteryInfo
*
* @brief Get batteries information
*
* @param nBatteryNumber: Index of battery
*
* @retval BatteryData: Structure of battery information
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerGetBatteryInfo
(
int
nBatteryNumber
,
BatteryData
*
rawData
);
/**
* upowerUpdateFirmware
*
* @brief Update UPower firmware version
*
* @param filename: Firmware file path
* @param bForceUpdate: true: Ignore firmware version confirmation
*
* @return Please refer to Onyx SDK status code
*
*/
OnyxApiStatus
upowerUpdateFirmware
(
char
*
filename
,
bool
bForceUpdate
);
}
\ No newline at end of file
upower_22/upower22_api/libupower22_api.a
0 → 100644
View file @
ccbe528f
File added
upower_22/upower_22/Release/PowerBoard.bin
0 → 100644
View file @
ccbe528f
File added
upower_22/upower_22/Release/upower_22
0 → 100644
View file @
ccbe528f
File added
upower_22/upower_22/src/upower_22.cpp
0 → 100644
View file @
ccbe528f
//============================================================================
// Name : upower_22.cpp
// Author : JerryLiao
// Version : 0.1
// Date : 2020/10/13
// Copyright : Copyright © 2020 BY Onyx Healthcare Inc.
// Description : UPower pro 22 Linux sample code
//============================================================================
#include <iostream>
#include "../../upower22_api/header/upower22_api.h"
int
main
()
{
if
(
upowerApiInitialize
()
!=
STATUS_SUCCESS
)
{
printf
(
"Can not connect to the device
\n
"
);
return
0
;
}
char
string
[
64
]
=
{
0
};
//char serialNumber[] = "0000000000-12345678";
bool
bEnable
=
false
;
int
nTemp
=
0
;
BatteryData
rawData
=
{
0
};
upowerLogControl
(
true
);
// ==================================================== Basic information
printf
(
"
\n\n
▼ Basic information
\n
"
);
upowerGetProductName
(
string
);
printf
(
"Product Name
\t
= %s
\n
"
,
string
);
upowerGetFirmwareVersion
(
string
);
printf
(
"Firmware Version = %s
\n
"
,
string
);
//upowerSetSerialNumber(serialNumber);
//upowerRebootDevice();
upowerGetSerialNumber
(
string
);
printf
(
"Serial Number
\t
= %s
\n
"
,
string
);
upowerGetBoardId
(
&
nTemp
);
printf
(
"Board ID
\t
= %d
\n
"
,
nTemp
);
// ==================================================== System Power Information
printf
(
"
\n\n
▼ System Power Information
\n
"
);
upowerGetACStatus
(
&
bEnable
);
printf
(
"AC Status
\t\t
= %s
\n
"
,
bEnable
?
"PlugIn"
:
"No Plug"
);
upowerGetDCOutVoltage
(
&
nTemp
);
printf
(
"DC Out Voltage
\t\t
= %d mV
\n
"
,
nTemp
);
int
anTemp
[
2
]
=
{
0
};
upowerGetDCOutStatus
(
anTemp
);
printf
(
"DC Out Cable
\t\t
= %s
\n
"
,
anTemp
[
1
]
>
0
?
"Connect"
:
"Disconnect"
);
printf
(
"DC Out Voltage Select
\t
= %d
\n
"
,
anTemp
[
0
]);
upowerGetTotalPercentage
(
&
nTemp
);
printf
(
"Battery Total Percentage = %d
\n
"
,
nTemp
);
// ==================================================== Battery Information
printf
(
"
\n\n
▼ Battery Information
\n
"
);
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
upowerGetBatteryInfo
(
i
,
&
rawData
);
std
::
string
strSerialNumber
=
std
::
string
(
rawData
.
SerialNumber
);
if
(
!
strSerialNumber
.
empty
())
{
printf
(
"=========== Battery ID [%d] ===========
\n
"
,
rawData
.
ReportID
);
printf
(
"DesignCapacity
\t\t
= %d mAh
\n
"
,
rawData
.
DesignCapacity
);
printf
(
"DesignVoltage
\t\t
= %d mV
\n
"
,
rawData
.
DesignVoltage
);
printf
(
"FullChargeCapacity
\t
= %d mAh
\n
"
,
rawData
.
FullChargeCapacity
);
printf
(
"RemainingCapacity
\t
= %d mAh
\n
"
,
rawData
.
RemainingCapacity
);
printf
(
"Voltage
\t\t\t
= %d mV
\n
"
,
rawData
.
Voltage
);
printf
(
"Current
\t\t\t
= %d mA
\n
"
,
rawData
.
Current
);
printf
(
"RemainPercent
\t\t
= %d%%
\n
"
,
rawData
.
RemainPercentage
);
printf
(
"AverageCurrent
\t\t
= %d mA
\n
"
,
rawData
.
AverageCurrent
);
printf
(
"AverageTimeToEmpty
\t
= %d minutes
\n
"
,
rawData
.
AverageTimeToEmpty
);
printf
(
"AverageTimeToFull
\t
= %d minutes
\n
"
,
rawData
.
AverageTimeToFull
);
printf
(
"Battery Mode
\t\t
= %x
\n
"
,
rawData
.
BatteryMode
);
printf
(
"ChargingVoltage
\t\t
= %d mV
\n
"
,
rawData
.
ChargingVoltage
);
printf
(
"ChargingCurrent
\t\t
= %d mA
\n
"
,
rawData
.
ChargingCurrent
);
printf
(
"CycleCount
\t\t
= %d times
\n
"
,
rawData
.
CycleCount
);
printf
(
"GaugeStatus
\t\t
= %X
\n
"
,
rawData
.
GaugeStatus
);
printf
(
"Temperature
\t\t
= %.2f ℃
\n
"
,
((
float
)
rawData
.
Temperature
/
10
)
-
273.15
);
printf
(
"ManufactureDate
\t\t
= %d/%d/%d (y/m/d)
\n
"
,
((
int
)((
rawData
.
ManufactureDate
>>
9
)
&
0x7F
)
+
1980
),
((
rawData
.
ManufactureDate
>>
5
)
&
0x0F
),
(
rawData
.
ManufactureDate
%
0x1F
));
printf
(
"SerialNumber
\t\t
= %s
\n
"
,
rawData
.
SerialNumber
);
if
((
rawData
.
Status
&
0x10
)
>
0
)
printf
(
"Status
\t\t\t
= FullyCharged
\n
"
);
else
if
((
rawData
.
Status
&
0x08
)
>
0
)
printf
(
"Status
\t\t\t
= PreCharging
\n
"
);
else
if
((
rawData
.
Status
&
0x02
)
>
0
)
printf
(
"Status
\t\t\t
= Charging
\n
"
);
else
if
((
rawData
.
Status
&
0x04
)
>
0
)
printf
(
"Status
\t\t\t
= Discharging
\n
"
);
else
printf
(
"Status
\t\t\t
= No action
\n
"
);
int
package_size
=
(
int
)(((
rawData
.
Status
&
0x08
)
>>
2
)
|
((
rawData
.
Status
&
0x80
)
>>
7
));
if
(
package_size
==
1
)
printf
(
"BatteryType
\t\t
= XL
\n
"
);
else
if
(
package_size
==
2
)
printf
(
"BatteryType
\t\t
= XXL
\n
"
);
else
if
(
package_size
==
0
)
printf
(
"BatteryType
\t\t
= Standard
\n
"
);
else
printf
(
"BatteryType
\t\t
= N/A
\n
"
);
// XXL Extend Data
if
(
package_size
==
2
)
{
printf
(
"LogIndex
\t\t
= %d
\n
"
,
rawData
.
LogIndex
);
printf
(
"FullyChargeDate
\t\t
= %s
\n
"
,
rawData
.
FullyChargeDate
);
printf
(
"FccThreshold
\t\t
= %d mAh
\n
"
,
rawData
.
FccThreshold
);
printf
(
"FccBackup
\t\t
= %d mAh
\n
"
,
rawData
.
FccBackup
);
printf
(
"CycleCountThreshold
\t
= %d
\n
"
,
rawData
.
CycleCountThreshold
);
printf
(
"LifetimeMaxPackVoltage
\t
= %d mV
\n
"
,
rawData
.
LifetimeMaxPackVoltage
);
printf
(
"LifetimeMinPackVoltage
\t
= %d mV
\n
"
,
rawData
.
LifetimeMinPackVoltage
);
printf
(
"LifetimeMaxCurrent
\t
= %d mA
\n
"
,
rawData
.
LifetimeMaxCurrent
);
printf
(
"LifetimeMinCurrent
\t
= %d mA
\n
"
,
rawData
.
LifetimeMinCurrent
);
printf
(
"SmbLedBlink
\t\t
= %X
\n
"
,
rawData
.
SmbLedBlink
);
printf
(
"FullChargeVoltage
\t
= %d mV
\n
"
,
rawData
.
FullChargeVoltage
);
printf
(
"DateRecord
\t\t
= %X (%d/%d/%d)
\n
"
,
rawData
.
DateRecord
,
(
rawData
.
DateRecord
/
512
)
+
1980
,
(
rawData
.
DateRecord
%
512
)
/
32
,
rawData
.
DateRecord
%
32
);
printf
(
"TimerRecord
\t\t
= %X (%d:%d)
\n
"
,
rawData
.
TimerRecord
,
rawData
.
TimerRecord
/
256
,
rawData
.
DateRecord
%
256
);
printf
(
"BatteryFirstUseTime
\t
= %X
\n
"
,
rawData
.
BatteryFirstUseTime
);
printf
(
"PackMode
\t\t
= %X (%s mode)
\n
"
,
rawData
.
PackMode
,
rawData
.
PackMode
==
0xAABB
?
"sport"
:
"eco"
);
}
printf
(
"
\n
"
);
}
}
// ==================================================== If you want to update firmware
//char filename[] = "PowerBoard.bin";
//upowerUpdateFirmware(filename, false);
upowerApiUninitialize
();
return
0
;
}
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