提交代码密码:Maolin@369
yangmaolin Ymaolin03d%
打开ADB: #*#4479*#*
docker exec -it -u root ZH_yangmaolin /bin/bash
工程模式
am start -n com.saicmotor.media/.view.activity.MediaActivity
am start -n com.bmit.engineermode/.MainPageActivity
adb shell am start -n com.android.car/.am.TestCarActivity
logcat |grep numArr
Camera配置文件: atc_camera_config.xml
用这个Intent ,两个都能拉起来
am start -a android.settings.SETTINGS
1、从服务器上下载编译文件
\\192.168.0.37\jenkins_jobs\workspace\SOIMT_jfrog_files_download\zhonghong\
\\192.168.0.195\share\OIMT_上汽海外\svn_all\外部\SOIMT提供资料\000 开发设计总体需求\03-开发类\00-接口库和文档(明月发布)
从本地上传文件
scp filename zhonghong@10.30.4.55:/app2/docker_runner/ZH/share/
上传Jar包
https://teams.microsoft.com/_#/FileBrowserTabApp/SAIC%202.0C2%E5%B9%B3%E5%8F%B0%E9%A1%B9%E7%9B%AE?threadId=19:40ad7ec6cb7c46d28dc3c5540a7e8ce2@thread.tacv2&ctx=channel
http://192.168.0.162:8088/view/I_8015/job/SOIMT_jfrog_files_download/ 下载上传文件
\\192.168.0.195\share\OIMT_上汽海外\MCU版本
软件版本:
\\192.168.0.37\jenkins_jobs\workspace\SOIMT_jfrog_files_download\SAIC2.0C2\SOC\Nightly
su \r setprop bmi.service.adb.root 1 \r
adb root & remount \r
echo "device" > /sys/class/dual_role_usb/dual-role-usb20/data_role \r
41f发02 70 01
虚拟机配置:
C:\Windows\System32\drivers\etc\hosts
#内网10.30.1.7 uag01.soimtvdi.local
61.169.5.66 uag.soimtvdi.local
10.30.4.61 sso.soimt.intra
https://uag.soimtvdi.local:9000
\\192.168.0.195\share\OIMT_上汽海外\版本\EH32_明月版本\
adb shell am start -n com.zhonghong.tbox/.MainActivity
adb shell am start -n com.android.car/.am.TestCarActivity
车控车设 依赖配置字 @杨茂林 @阿拉丁神灯
- C00D byte1 车速感应助力转向 0x01 SSPS车速感应助力转向
- C008 byte2 国家区域代码 0x06泰国
然后命令进入:
adb shell am start -n com.saicmotor.vehiclesetting/.ui.VehicleSettingActivity
adb shell am start -n com.saicmotor.caradapter
adb shell am start -n
2、ADB
setprop bmi.service.adb.root 1
setenforce 0pppppPPP
adb root & remount
echo "device" > /sys/class/dual_role_usb/dual-role-usb20/data_role
3、账号/密码
虚拟机:uag.soimtvdi.local:9000
VDI密码
yangmaolin Ymaolin03d%
Bug系统:
https://dev.azure.com/saic-iov/
密码
yangmaolin@oimt.tech/Zz4898902
3fuay+8K Maolin666@
登录代码服务器:
ssh zhonghong@10.30.4.55
zhonghong@123
docker start ZH_yangmaolin
docker exec -it -u root ZH_yangmaolin /bin/bash
gerrit系统密码
Zz@4898902
车辆管理:!My12345
4、
/system/framework/android.car.jar
【腾讯文档】SAIC平台-CarService接口ID-定义文档_20231220
https://docs.qq.com/sheet/DUGVYWUdNbm1kd0p5?tab=000003
进入编译服务器
5 、vi /app2/docker_runner/ZH/share/hardware.interfaces.automotive.vehicle.2.0.jave/VehicleProperty.java
6、1.1 source build/envsetup.sh (. build/envsetup.sh);
1.2 lunch , 然后选择12(full_ac8x_demo-userdebug)
7、查看编译日志:vi build_ac8x_demo.log
8、提交代码:
git commit --amend
git push origin HEAD:refs/for/saic_dev20c2
origin/saic_dev20c2
[feature] [Car-lib] [Modify the setInt function of the Eol function]
[feature] [engineermode] [Added automatic upgrade manual]
[feature] [AtcCarService][Add upgrade instructions]
[feature] [ExtcarService][Modify frequency default value of the EOL module]
[feature] [framework][Add logistics data interface]
vim ~/.gitconfig
CreateChangeid = false
git config --global user.name "Your Name"
git config --global user.email yangmaolin@oimt.tech
配置邮箱之后要,commit --amend更新提交的信息
i
9、logcat | grep liaofeiliang
10、adb root & adb remount remount
11、 make android.car-system-stubs-docs-update-current-api
make android.car-stubs-docs-update-current-api
12、
https://gerrit.soimt.intra/dashboard/self
yangmaolin@oimt.tech Zz@4898902
13 、开始发这个协议:00 00 04 1F 00 00 00 00 00 00 00 00 2F3
onChangeEvent.20240108
logcat | grep -e "zhonPropertyEvent" -e "onChangeEvent="
logcat |grep "getProperty, propId"
logcat | grep -e "yml" -e "zhBmiVehicleConnector"
logcat |grep "mPropertyId=0x21401039"
logcat |grep "onChangeEvent.2024"
2140106E 空调按钮
logcat |grep "BmiADASProcessor::send"
logcat |grep "ExtPropertyHalService: setProperty()"
logcat |grep "ControlInterface: print data:0xff 0xaa 0xc0 0x00 0x00 0xb0 0x14 0x01 0xf1"
logcat |grep "parse_single_cmd"
logcat |grep "parse_single_cmd: 0Xff, 0Xaa, 0X50, 0X0, 0X0, 0Xa0, 0X15, 0X1, 0Xf1"
logcat |grep "1039"
logcat |grep "ControlInterface: print data:0xff 0xaa"
SENSOR_TYPE_IGNITION_STATE 0x11401304 289411844
logcat |grep -e "1141304" -e "18092804"
logcat | grep -e "yml.get" -e "onChangeEvent="
配置360:
C002 byte3=0x00
C004 Byte4=0x01
C014_Byte1 == 0
RVC:
C002 byte3=0x02
C004 Byte4=0x00
logcat |grep -e "557847608" -e "21401438" -----倒车 ID_SMPV_ONLYREAD_TRANSMISSION_GEAR 0x21401438
logcat |grep -e "557847422" -e "2140137e" ID_SMPV_AVM_360_STATE
AVM系统状态控制信号: ID_SMPV_AVM_360_STATE: ZS11: 303 AVMDspReq - 37C AVMSysSts |||| AP32: 501 AVMDspSwReq - 37C AVMSysSts)
辅助线设置信号: ID_SMPV_AVM_SUBORDINATE_LINE_TYPE:: ZS11: 303 FrtAndRrGudOvlyDspReq - 37C FrtAndRrGudOvlyDspCmd |||| AP32: 501 FrtAndRrGudOvlyDspReq - 37C FrtAndRrGudOvlyDspCmd
2d3d模式信号: ID_SMPV AVM_THREED_UI_DSP: 0x21401380 ZS11: 303 ThreeDimnlDspReq - 37C ThreeDimnlDspCmd |||| AP32: 501 ThreeDimnlDspReq - 37C ThreeDimnlDspCmd
视角选择信号: ID_SMPV_AVM_SURND_VIEW_TYPE: 0x21401383 ZS11: 303 SurndViewSeln - 37C AVMCrntViewSta |||| AP32: 501 SurndViewSeln - 37C AVMCrntViewSta
低速转向视图自动开启设置: ID_SMPV_ AVM_LOW_SPD_AUTO_STATE: ZS11: 303 LowSpdAutocOpenAVMReq - 37C LowSpdAutocOpenAVMDspCmd |||| AP32: 501 LowSpdAutocOpenAVMReq - 37C LowSpdAutocOpenAVMDspCmd
RCTA-left: ID_SMPV_CARSET_LEFT_RTCA_WARN: - 204 LRCTAWrnng
RCTA-right: ID_SMPV_CARSET_RIGHT_RTCA_WARN: - 204 RRCTAWrnng
自动标定: ID_SMPV_AVM_CAL_MD: ZS11: 303 AVMCalMdReq - 37C AVMCalMdReqResp |||| AP32: 501 AVMCalMdReq - 37C AVMCalMdReqResp
AVM系统状态控制信号: ID_SMPV_AVM_360_STATE
辅助线设置信号:EVS_ID_AVM_ASSISTANT_LINE ID_SMPV_AVM_SUBORDINATE_LINE_TYPE
2d3d模式信号:ID_SMPV_AVM_THREED_UI_DSP
视角选择信号:ID_SMPV_AVM_SURND_VIEW_TYPE
低速转向视图自动开启设置:ID_SMPV_AVM_LOW_SPD_AUTO_STATE
RCTA-left:ID_SMPV_CARSET_LEFT_RTCA_WARN
RCTA-right:ID_SMPV_CARSET_RIGHT_RTCA_WARN
自动标定:ID_SMPV_AVM_CAL_MD
mParkingAssistanceManager,setGlobalproperty(Integer,class, CarParkingAssistanceManager,ID_SMPV_AVM_THREED_UI_DSP, 2);
com.android.externalcar
获取属性代码分析:
HalClient
解决冲突例子:
1、git fetch "ssh
2、repo sync .
3、git reset --hard
4、git remote -v
5、git rebase --abort
6、git cherry-pick --continue
557846621
adb shell dumpsys activity service com.android.car inject-vhal-event 0x2140105D 1 2
adb shell dumpsys activity service com.android.car inject-vhal-event 0x21401768 1 2
EOL_SET_TFT_DISPLAY
adb shell dumpsys activity service com.android.car inject-vhal-event 0x21401762 1 2
EOL_SET_IPK_LVDS_OUTPUT
adb shell dumpsys activity service com.android.car inject-vhal-event 0x21401768 1 2
SENSOR_TYPE_IGNITION_STATE 点火状态 1F1
ID_SMPV_HVAC_FROROW_BATTERY 前排空调电源 38B FICMACOnOffSwReq <-> 3A8 ACOnOffDspCmd
ID_SMPV_HVAC_AC_ON A/C设置 38F FICMComprOnOffSwReq <-> 3A8 ComprOnOffDspCmd
ID_SMPV_HVAC_FROROW_MODE 吹脸、吹脸吹脚、吹脚、吹脚吹窗、吹窗 391 FICMACDrvrAirMdReq/FICMACDrvrAirMdReqV <-> 37E ACDrvrAirMdDspCmd //==========
ID_SMPV_HVAC_AC_LOOP_MODE----2140106D 内/外循环 38B FICMACRcctnSwReq <-> 3A8 ACRcctnDspMd
ID_ZONED_HVAC_DRVTEMP_SET 设置温度 38B FICMACLTemReq/FICMACLTemV <->
3A8 ACLTemDspCmd ID_SMPV_HVAC_DRVTEMP_READ=21601089 主驾温度 矩阵没找到 有问题 ACDrvrTemDspCmd
ID_SMPV_HVAC_FROROW_BLOW_SET 设置风量 38B FICMACFrtBlwrLvlReq/ACFrtBlwrLvlReqV <-> 3A8 ACFrtBlwrSpdDspCmd
ID_SMPV_HVAC_CAR_OUT_TEMPTURE 室外温度 5E5 ACAmbtTem/ACAmbtTemV
EOL 调试:
蓝牙状态 EOL_GET_BT_STATES=21401745/557848389
EOL_SET_BT_STATES=21401744/557848388
EOL_GET_BT_PAIR_DEVICES=557913966/0x2141176e
logcat |grep -e "21401745" -e "21401744" -e "557848389" -e "557848388"
EOL_GET_BT_PAIR_DEVICES 2141176e/557913966
logcat |grep -e "21401745" -e "557848389" -e "557913966"
logcat |grep -e "2141176e" -e "557913966"
TIMEINFO_YEAR 557846539/2140100B
logcat |grep -e "2141176E" -e "557913966"
logcat |grep -e "557846539" -e "2140100B"
dumpsys activity service com.android.car inject-vhal-event 0x2141176F 1 1
数据回调:
dumpsys activity service com.android.car inject-vhal-event 0x21401745 1 1
EOL_SET_TP_TEST 557848423 /0x21401767
dumpsys activity service com.android.car inject-vhal-event 0x21401767 1 2
EOL_SET_GPS_GAIN_MODE 557848420/0x21401764
dumpsys activity service com.android.car inject-vhal-event 0x21401767 1 2
EOL_GET_TRECK_SATELLITES
EOL_GET_VISIBLE_SATELLITES
EOL_GET_HDOP
EOL_GET_VDOP
EOL_GET_GPS_CN_VALUE
logcat |grep setProperty()
车设:EPS
ID_SMPV_CARSET_CUSTOM_STEER_WHELL=0x214010fe
伴我回家:
ID_SMPV_CARSET_FOLLOW_ME_HOME =0x2140118f
logcat |grep ExtEolManager
CarAudioManager: setGroupVolume()
15、CAN 更新时间代码:
AtcCarService-->syncMcuTimeToSoc-----最终执行----TimeDetectorStrategyImpl.java--->suggestExternalTime
第三方按键功能
KeyEvent.KEYCODE_VOLUME_UP: //keycode = 24
KeyEvent.KEYCODE_VOLUME_DOWN: //keycode = 25
方向盘线控SWC2
(右方控)
KeyEvent.KEYCODE_SWC_UP://keycode = 297
KeyEvent.KEYCODE_SWC_DOWN://keycode = 298
AUTO_TIME
AUTO_TIME_ZONE
logcat |grep updateSystemTimetime
/ZhParseJson( 1944): updateSystemTimetime: 2024, 3, 24, 20, 9, 48
2024-03-13 05:47:16.683 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED
2024-03-13 05:47:16.776 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED
2024-03-13 05:47:22.963 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED
2024-03-13 05:47:23.024 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED
2024-03-13 05:47:23.104 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.avrcp-controller.profile.action.CONNECTION_STATE_CHANGED
2024-03-13 05:47:23.115 4286-4286/com.zh.commontest I/MainActivity: onCreate=android.bluetooth.avrcp-controller.profile.action.CONNECTION_STATE_CHANGED
亮度调节:
SV_SEND_BACKLIGHT_DATA = 289477594/0x114113DA
SV_DISPATCH_BACKLIGHT_DATA = 289477593/0x114113d9
logcat |grep -e "2141176E" -e "557913966"
logcat |grep -e "289477593" -e "114113d9"
logcat |grep -e "289477594" -e "114113da"
@wilber @自由飞翔 怎么他们的背光下发的ID老变来变去的,之前是发DISPLAY_BRIGHTNESS (0A03),
前段时间又改成 SV_DISPATCH_BACKLIGHT_DATA (13D9),
我刚刚升级了今天的版本,又变成了DISPLAY_BRIGHTNESS (0A03) 了
声音:
CarAudioService.setGroupVolume(int zoneId,int groupId,int index,int flags)
public void onGroupVolumeChanged(int zoneId, int groupId, int flags)
获取声音大小:
int groupVolume = VolumeController.this.mCarAudioManager.getGroupVolume(i2);
onGroupVolumeChanged: volume =|setVolumeTest: mStreamType
setVolumeTest: mStreamType
AudioAttributes: setLegacyStreamType() with Source: SOURCE_CP_NAVI, 62
钢琴键调节音量:
音量加:1094713366/0x41400016
音量减:1094713367/0x41400017
mCarAudioManager = (CarAudioManager) mCarApi.getCarManager(Car.AUDIO_SERVICE);
mCarAudioManager.registerCarVolumeCallback(mCarVolumeCallback);
mCarVolumeCallback回调方法onGroupVolumeChanged中使用
mCarAudioManager.getVolumeGroupIdForUsage(xxx)出来的不是
CarAudio.VOLUME_TYPE_VOICEl类型
switch (carPropertyValue.getPropertyId()) {
case CarCabinManager.ID_ZONED_VEHICLE_ESP:
int intValue = ((Integer) carPropertyValue.getValue()).intValue();
CabinController.LOG.mo12275i("onChangeEvent: ID_ZONED_VEHICLE_ESP value = " + intValue + "(0:OFF;1:Normal;2:Competitive)");
CabinController.this.sendHandlerMsg(1, Integer.valueOf(intValue));
音量调节:
1、KeyStrategyService------volueAction
2、CarAudioService----->setCurGroupVolume
3、ExtCarAudioService---getExtFocuControlManager------得到对象---ExtFocuControlManager.getTopFocusSourceID()
---->AudioAttributes.getAudioSourceId();------>AudioAttributes.getBundle();---> Bundle bundle.getInt(KEY_SOURCE_ID);
4、android/car/am/audio/CarAudioService----->setGroupVolume
5、framework/base/media/java/android/media/AudioFocusInfo.java
CarService 1、ExtCarAudioService.java ---->setCurGroupVolume(zoneId,index);
2、CarAudioServcie.java ---->setCurGroupVolume(zoneId,index);
3、AudioAttributes.getStreamWithSource(sourceID)
4、AudioAttributes.getAudioSourceId
5、/framework/base/media/java/android/media/AudioManager.setStreamVolume
AudioManager: setStreamVolume: StreamType = 3, index = 15, flags = 1024
ExtFocuControlManager: ExtCarAudio Evaluating GAIN_TRANSIENT
MyKeyStrategy: volumeAction: sourceId=
setLegacyStreamType()
AudioAttributes attrib = new AudioAttributes.Builder().
setLegacyStreamType(64).
setContentType(AudioAttributeS.CONTENT_TYPE_SONIFICATION).//AudioAttributessetUsage(1).
build():
HashMap<String, 0bject> hashMap = getAudioAttributesMapForBundler( audioType: "cp_ring", bootResume: 0);
this.ringRegAttrib = SaiccarAudioManager.setcarAttr(attrib, hashMap);
AudioFocusRequest.Builder focusBuilder = new AudiofocusRequest.Builder(AudioManagEr.AUDIOFOCUS_GAIN_TRANSIENT);
focusBuilder .setOnAudiofocuschangelistener(this.ringListener),setAcceptsDelayedFocusGain(false),
focusBuilder.setAudioAttributes(this.ringReqAttrib);int res =
this.mAudioManager.requestAudioFocus(focusBuilder.build());
音量回调:
CarVolumeCallBackHandler.onGroupVolumeChanged
EOL_GET_BT_PAIR_DEVICES
busybox vi /system/usr/keylayout/Generic.kl
insmod /data/zhc_diag.ko
logcat |grep ExtDtcManager
20240326_23:32:3801-01 07:00:05.185 I/ZhParseJson( 1958): updateSystemTimetime: 2024, 3, 19, 20, 21, 11
adb shell am start -n com.android.car/.am.TestCarActivity
8、属性回调逻辑----------
(1) CarVendorExtensionManager----->onChangeEvent(CarPropertyValue Value)
(2) CarPropertyManager.onPropertyChanged(CarPropertyEvent event)
(3) CarPropertyService.onPropertyChange(List<CarPropertyEvent> events)
(4) PropertyHalService.onHalEvents(List<VehiclePropValue>)
(5) VehicleHal.onPropertyEvent
(6) HalClient.onPropertyEvent
(7) 发送属性:VehicleHal.injectVhalEvent
SENSOR_TYPE_CAR_SPEED 291508989/0x116012fd
logcat |grep -e "291508989" -e "116012fd"
logcat |grep -e "1094713367" -e "FK" -e "0Xd5" -e "keycode:298"
public int getCurVolumeType() {
CarAudioManager carAudioManager = this.mCarAudioManager;
if (carAudioManager == null) {
return 0;
}
AudioFocusInfo topAudioFocusInfo = carAudioManager.getTopAudioFocusInfo();
if (topAudioFocusInfo != null) {
int usage = topAudioFocusInfo.getAttributes().getUsage();
LOG.mo12275i("getCurVolumeType currentUsage === " + usage);
if (usage == 1) {
return 0;
}
if (usage == 2) {
return 1;
}
if (usage == 6) {
return 3;
}
if (usage == 11) {
return 2;
}
if (usage != 12) {
return 0;
}
return 12;
}
LOG.mo12275i("getCurVolumeType currentUsage === null ");
return 0;
}
(8)焦点请求已经回调
CarAudioManager.mFocusChangeListener.onAudioFocusGrant----->ExtCarAudioService.notifyExtAudioFocusGrant
----->ExtFocuControlManager.onAudioFocusRequest
请求音频焦点:
private final AudioManager mAudioManager;
AudioFocusRequest build = new AudioFocusRequest.Builder(1).setAudioAttributes(new AudioAttributes.Builder().setUsage(1).setLegacyStreamType(this.mCurSourceType).addBundle(bundle).build()).setOnAudioFocusChangeListener(this).setAcceptsDelayedFocusGain(true).build();
this.mAudioRequest = build;
(1)int requestAudioFocus = this.mAudioManager.requestAudioFocus(build);
(2)mAudioManager.requestAudioFocus--->AudioService.requestAudioFocus
(3)MediaFocusControl.requestAudioFocus();
(4)MediaFocusControl.notifyExtFocusPolicyFocusRequest_syncAf
(5)mFocusPolicy.notifyAudioFocusRequest
(6)方法返回:mFocusOwnersForFocusPolicy--------FocusRequester.dispatchFocusResultFromExtPolicy
mAudioManager.mAudioFocusDispatcher.dispatchFocusResultFromExtPolicy
(7)回调音频焦点
AudioService.setFocusRequestResultFromExtPolicy------>MediaFocusControl.setFocusRequesResultFromExtPolicy
AudioPolicy.onAudioFocusRequest
(8)ExtFocuControlManager---->dispatchFocusGainedLocked
(9)ExtFocuControlManager---->
(10)
APP-----注册回调----CarAudioManager.setAudioFocusChangeListener
ExtCarAudioService.onAudioFocusGrant--->ExtCarAudioService.notifyExtAudioFocusGrant
ExtFocusControlManager.onAudioFocusRequest--->notifyExtAudioFocusGrant