Android CarPower

一、CarPower介绍

在Android Automotive OS (AAOS)中,CarPower负责车载电源的原理,它一面同libsusped交互控制AP(应用处理器,也就是Soc)的电源状态,一方面通过VehicleHAL与MCU通信接收和发送电源相关指令。其中CarPowerManagementService作为CarService的子服务,负责调用HAL层(VehicleHAL)实现具体功能,而CarPowerManagement作为客户端接口由APP调用,如下为CarPower的Block图:

CarPower重要的状态如下:

CpmsState:

状态 含义

WAIT_FOR_VHAL

0

表示 Android 的电源状态已启动,但等待VHAL发出启动主要功能的信号。

ON

1

表示系统的电源状态处于ON状态。

SHUTDOWN_PREPARE

2

示系统正在准备关机或挂起的电源状态。应用程序应清理并准备挂起。

WAIT_FOR_FINISH

3

AAOS 通知 VHAL 它可以关闭。车载微控制器单元 (VMCU) 应将系统芯片 (SoC) 置于深度休眠模式,并断开 AP 的电源。然后,AAOS 进入 STR 状态,但不执行任何代码。

SUSPEND

4

车辆和 AP 断电,不执行任何代码,AP/RAM 仍然通电。

SIMULATE_SLEEP

5

-

SIMULATE_HIBERNATION

7

-

对应的状态迁移图如下:



CarPowerManager State:

状态 含义

STATE_INVALID

0

表示当前电源状态的电源状态不可用、未知或无效。

STATE_WAIT_FOR_VHAL

1

表示 Android 的电源状态已启动,但等待VHAL发出启动主要功能的信号。

STATE_SUSPEND_ENTER

2

表示系统进入深度睡眠(挂起到 RAM)的电源状态。

STATE_SUSPEND_EXIT

3

表示系统从挂起中唤醒的电源状态。

STATE_SHUTDOWN_ENTER

5

表示系统进入关机状态的电源状态。

STATE_ON

6

表示系统的电源状态处于ON状态。

STATE_SHUTDOWN_PREPARE

7

表示系统正在准备关机或挂起的电源状态。应用程序应清理并准备挂起。

STATE_SHUTDOWN_CANCELLED

8

#include<iostream> #include<string> using namespace std; class Car{ private: string ID;//车辆编号 string Model;//车辆型号 int Power;//车辆功率 string Color;//车辆颜色 double Price;//车辆价格 public: void setID(string carID){ ID = carID; } string getID(){ return ID; } void setModel(string carModel){ Model = carModel; } string getModel(){ return Model; } void setPower(int carPower){ Power = carPower; } int getPower(){ return Power; } void setColor(string carColor){ Color = carColor; } string getColor(){ return Color; } void setPrice(double carPrice){ Price = carPrice; } double getPrice(){ return Price; } void Display(){//显示车辆属性信息 cout<<"编号"<<ID<<"的"<<Model<<"汽车的颜色是"<<Color<<"色,功率为"<<Power<<"马力,价格为"<<Price<<"元"<<endl; } }; int main(){ Car car1, car2; string ID, Model, Color; int Power; double Price; //获取车辆1的信息 cout<<"请输入车辆1的编号:"; getline(cin, ID); car1.setID(ID); cout<<"请输入车辆1的型号:"; getline(cin, Model); car1.setModel(Model); cout<<"请输入车辆1的颜色:"; getline(cin, Color); car1.setColor(Color); cout<<"请输入车辆1的功率:"; cin>>Power; car1.setPower(Power); cout<<"请输入车辆1的价格:"; cin>>Price; car1.setPrice(Price); cin.ignore();//清除缓存区 cout<<endl; //获取车辆2的信息 cout<<"请输入车辆2的编号:"; getline(cin, ID); car2.setID(ID); cout<<"请输入车辆2的型号:"; getline(cin, Model); car2.setModel(Model); cout<<"请输入车辆2的颜色:"; getline(cin, Color); car2.setColor(Color); cout<<"请输入车辆2的功率:"; cin>>Power; car2.setPower(Power); cout<<"请输入车辆2的价格:"; cin>>Price; car2.setPrice(Price); //显示车辆信息 car1.Display(); car2.Display(); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值