AAOS系列之(二)代码结构

📚 1.CarServcie 是什么?包含些什么?

1. CarService 代码路径如下:

android11.0\packages\services\Car

在这里插入图片描述

  • 如上图所示,AAOS的代码主要包含两部分, 其一是提供个APP调用的jar包, 其代码相当于客户端, 通过AIDL和服务端(service)中的服务进行通信.

如下图中所示,property 模块中,包含了提供给APP调用的CarPropertyManager.java,和服务端通信的
ICarProperty.aidl.

  • android11.0/packages/services/Car/car-lib/src/android/car/hardware/property/CarPropertyManager.java
public class CarPropertyManager extends CarManagerBase {
    private static final boolean DBG = true;
    private static final String TAG = "CarPropertyManager";
    private static final int MSG_GENERIC_EVENT = 0;
    private final SingleMessageHandler<CarPropertyEvent> mHandler;
    private final ICarProperty mService;
    private final int mAppTargetSdk;

CarPropertyManager继承自CarManagerBase , 是一个Java层的管理服务.这个类运行在APP的进程中.

ICarProperty.aidl 是用来描述CarPropertyManager 和 CarPropertyService之间的接口方法,概述如下:

package android.car.hardware.property;

import android.car.hardware.CarPropertyConfig;
import android.car.hardware.CarPropertyValue;
import android.car.hardware.property.ICarPropertyEventListener;

/**
 * @hide
 */
interface ICarProperty {

    void registerListener(int propId, float rate, in ICarPropertyEventListener callback) = 0;

    void unregisterListener(int propId, in ICarPropertyEventListener callback) = 1;

    List<CarPropertyConfig> getPropertyList() = 2;

    CarPropertyValue getProperty(int prop, int zone) = 3;

    void setProperty(in CarPropertyValue prop, in ICarPropertyEventListener callback) = 4;

    String getReadPermission(int propId) = 5;

    String getWritePermission(int propId) = 6;
}

car-lib的代码结构如下:

我们需要关注的是 media,hardware,input,user这几个主要目录.
在这里插入图片描述

文件夹描述
media媒体相关的模块
hardware车辆硬件相关的模块
input输入事件相关的模块
user多用户相关的模块

其中 hardware 中包含了几个模块如下:

目录描述
cabin车身相关的模块
havc空调相关的模块
power车辆电源相关的模块
property车辆属性相关的模块

2.APP端常用的类如下:

类名描述
android11.0_rk3568/packages/services/Car/car-lib/src/android/car/hardware/cabin/CarCabinManager.java车身相关的模块
android11.0_rk3568/packages/services/Car/car-lib/src/android/car/hardware/hvac/CarHvacManager.java空调相关的模块
android11.0_rk3568/packages/services/Car/car-lib/src/android/car/hardware/power/CarPowerManager.java车辆电源相关的模块
android11.0_rk3568/packages/services/Car/car-lib/src/android/car/hardware/property/CarPropertyManager.java车辆属性相关的模块

🧱 3. 服务端的代码如下:

AAOS的服务端代码分2类, 一类是继承自CarServiceBase,另外一类是继承自HalServiceBase

  • 其中继承自CarServiceBase的服务,是实现了APP端的AIDL中Stub的服务端. 用来和APP端进行Binder通信.
  • 而继承自HalServiceBase的这一类服务,是和Vehicle的HAL打交道的,需要接收或者处理车辆属性的类.
类名描述
android11.0_rk3568/packages/services/Car/service/src/com/android/car/audio/CarAudioService.javaAAOS的音频服务
android11.0_rk3568/packages/services/Car/service/src/com/android/car/audio/CarAudioFocus.javaAAOS的音频焦点服务
android11.0_rk3568/packages/services/Car/service/src/com/android/car/CarService.javaAAOS的服务总入口,提供给SystemServer启动
android11.0_rk3568/packages/services/Car/service/src/com/android/car/CarPropertyService.java车辆属性服务

“专注AAOS架构与实战,欢迎关注一起探索车载开发。”

下一篇推荐
👉 AAOS系列之(三)----CarService启动流程

03-21
### 关于 Mycat 数据库中间件 #### 什么是 Mycat? Mycat 是一款开源的分布式数据库系统,作为数据库中间件,主要用于解决大数据场景下的读写分离、分库分表等问题[^5]。它可以像 MySQL 一样被使用,开发者只需在 Mycat 中配置具体的分库分表策略即可完成复杂的数据管理任务[^1]。 #### Mycat 的主要功能特性 Mycat 提供了一系列强大的功能来提升数据库性能和可扩展性: - **分布式架构**:支持分片(Sharding)、读写分离,从而显著提高数据库处理能力和并发量。 - **高可用性**:具备主备切换以及故障自动恢复的能力,保障系统的稳定运行。 - **动态数据路由**:能够根据实际业务需求灵活调整分片策略,满足不同应用场景的需求。 - **多协议兼容**:除了支持 MySQL 外,还兼容 MariaDB、Oracle 和 SQL Server 等多种数据库系统[^3]。 #### 安装与环境准备 为了成功部署并使用 Mycat,需按照以下指导进行操作: 1. 准备好 Java 运行环境(JDK 版本建议为 1.8 或更高版本),因为 Mycat 基于 Java 编写而成[^2]。 2. 下载官方发布的最新版 Mycat 软件包,并解压至目标目录下。 3. 修改 `server.xml` 文件中的相关参数设置,比如监听端口号,默认情况下为 `8066`;同时定义逻辑数据库名称及其对应的物理节点信息。 4. 启动服务进程并通过命令行工具或者图形界面访问验证连接状态正常与否。 #### 查询示例 当一切就绪之后,在日常开发过程中可以通过如下方式发起简单的查询请求: ```sql SELECT * FROM user; ``` 此条语句会经由 Mycat 解析后转发给相应的后台存储引擎执行完毕再返回结果集给前端调用方[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值