123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626 |
- #include "CarLinkPlayer.h"
- #ifdef USE_DBUS
- void InterfaceCallbackImpl::start(int type, int mode, int state)
- {
- if(mHandle){
- mHandle->requestLink((LinkType)type, (LinkMode)mode, (DbusReceive)state);
- }
- }
- void InterfaceCallbackImpl::touch(int x, int y, int press)
- {
- if(mHandle){
- mHandle->requestTouch(x,y, (TouchCode)press);
- }
- }
- void InterfaceCallbackImpl::multi_touch(int x1, int y1, int press1, int x2, int y2, int press2)
- {
- if(mHandle){
- mHandle->requestMultiTouch(x1,y1, (TouchCode)press1, x2, y2, (TouchCode)press2);
- }
- }
- void InterfaceCallbackImpl::key(int key){
- if(mHandle){
- mHandle->requestKey((KeyCode)key);
- }
- }
- void InterfaceCallbackImpl::wheel(int wheel, bool foucs)
- {
- if(mHandle){
- mHandle->requestWheel((WheelCode)wheel, foucs);
- }
- }
- void InterfaceCallbackImpl::night_mode(bool night)
- {
- if(mHandle){
- mHandle->requestNightMode(night);
- }
- }
- void InterfaceCallbackImpl::right_hand_dirver(bool right)
- {
- if(mHandle){
- mHandle->requestRightHandDriver(right);
- }
- }
- void InterfaceCallbackImpl::page(int page)
- {
- if(mHandle){
- mHandle->requestPage((AppPage)page);
- }
- }
- void InterfaceCallbackImpl::phone_ip(string ipstring)
- {
- if(mHandle){
- mHandle->requestPhoneIPAddress(ipstring);
- }
- }
- void InterfaceCallbackImpl::phone_bt(string btstring){
- if(mHandle){
- mHandle->requestPhoneBTAddress(btstring);
- }
- }
- void InterfaceCallbackImpl::car_bluetooch(string name, string address, string pin)
- {
- if(mHandle){
- mHandle->requestCarBluetooth(name, address, pin);
- }
- }
- void InterfaceCallbackImpl::wifi(string ssid, string passphrase, string channel_id){
- if(mHandle){
- mHandle->requestWifi(ssid, passphrase, channel_id);
- }
- }
- void InterfaceCallbackImpl::license(string lisence){
- if(mHandle){
- mHandle->requestLicense(lisence);
- }
- }
- void InterfaceCallbackImpl::input_text(string text){
- if(mHandle){
- mHandle->requestInputText(text);
- }
- }
- void InterfaceCallbackImpl::input_selection(int start, int stop){
- if(mHandle){
- mHandle->requestInputSelection(start, stop);
- }
- }
- void InterfaceCallbackImpl::input_action(int actionId, int keyCode){
- if(mHandle){
- mHandle->requestInputAction(actionId, keyCode);
- }
- }
- void InterfaceCallbackImpl::screen_size(int width, int height){
- if(mHandle){
- mHandle->requestScreenSize(width, height);
- }
- }
- void InterfaceCallbackImpl::bluetooth_cmd(string cmd){
- if(mHandle){
- mHandle->requestBluetoothCmd(cmd);
- }
- }
- void InterfaceCallbackImpl::broadcast(bool enable){
- if(mHandle){
- mHandle->requestBroadcast(enable);
- }
- }
- void InterfaceCallbackImpl::delay_record(int millisecond){
- if(mHandle){
- mHandle->requestDelayRecord(millisecond);
- }
- }
- void InterfaceCallbackImpl::wifi_state_changed(int action, int state, string phoneIp, string carIp){
- if(mHandle){
- mHandle->requestWifiStateChanged((WifiStateAction)action, (WifiState)state, phoneIp, carIp);
- }
- }
- #endif
- CarLinkPlayer::CarLinkPlayer():mPlayer(nullptr),mIsRunningBackGround(false),
- mpLinkAssist(nullptr),mLinkMode(Auto),mChangeMode(false),mNightMode(0),mRightHandDriver(0),mScreenWidth(0),mScreenHeight(0),mMillisecond(0),mStartCarLink(false),mAppStatus(nullptr),mUsbState(nullptr)
- {
- #ifdef USE_DBUS
- mpCallbacks = new InterfaceCallbackImpl(this);
- #endif
- }
- CarLinkPlayer::~CarLinkPlayer()
- {
- #ifdef USE_DBUS
- delete mpCallbacks;
- #endif
- if(mpLinkAssist)
- delete mpLinkAssist;
- }
- void CarLinkPlayer::initialize()
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- #ifdef USE_DBUS
- ArkDbus::instance()->start();
- ArkDbus::instance()->registerCallbacks(mpCallbacks);
- #endif
- mpLinkAssist = new LinkAssist();
- mpLinkAssist->RegisterUsbCallback(std::bind(&CarLinkPlayer::usb_state,this, std::placeholders::_1,std::placeholders::_2));
- /* if(handle){
- mHandle = (void(*)(int,int))handle;
- }
- */
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- #ifdef USE_DBUS
- void CarLinkPlayer::requestLink(LinkType linkType, LinkMode linkMode, DbusReceive status)
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mLinkMode = linkMode;
- if(status == DBUS_REQUEST_CONNECT){
- ArkDbus::instance()->SendLinkStatus(linkType, linkMode, DBUS_CONNECTTING);
- mLinkType = (LinkType)linkType;
- Start((LinkType)linkType, linkMode);
- }else if(status == DBUS_REQUEST_BACKGROUND){
- mPlayer->SetBackground();
- }else if(status == DBUS_REQUEST_FOREGROUND){
- mPlayer->SetForeground();
- }else if(status == DBUS_REQUEST_EXITED){
- mPlayer->Stop();
- }
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- void CarLinkPlayer::requestTouch(int x, int y, TouchCode pressed)
- {
- if(mPlayer){
- mPlayer->SendTouch(x, y, pressed);
- }
- }
- void CarLinkPlayer::requestMultiTouch(int x1, int y1, TouchCode pressed1, int x2, int y2, TouchCode pressed2)
- {
- if(mPlayer){
- mPlayer->SendMultiTouch(x1, y1, pressed1, x2, y2, pressed2);
- }
- }
- void CarLinkPlayer::requestKey(KeyCode key)
- {
- if(mPlayer){
- mPlayer->SendKey(key);
- }
- }
- void CarLinkPlayer::requestWheel(WheelCode wheelCode, bool bFoucs)
- {
- if(mPlayer){
- mPlayer->SendWheel(wheelCode, bFoucs);
- }
- }
- void CarLinkPlayer::requestPage(AppPage appPage)
- {
- if(mPlayer){
- mPlayer->OpenPage(appPage);
- }
- }
- void CarLinkPlayer::requestNightMode(bool night)
- {
- mNightMode = night;
- }
- void CarLinkPlayer::requestRightHandDriver(bool right)
- {
- mRightHandDriver = right;
- }
- void CarLinkPlayer::requestPhoneIPAddress(string str)
- {
- mstrIpAddress = str;
- printf("requestPhoneIPAddress str = %s", str.c_str());
- }
- void CarLinkPlayer::requestPhoneBTAddress(string str)
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mstrBtAddress = str;
- }
- void CarLinkPlayer::requestCarBluetooth(string name, string address, string pin)
- {
- BlueToothInfo blueToothInfo = {name, address, pin};
- mBlueToothInfo = blueToothInfo;
- }
- void CarLinkPlayer::requestWifi(string ssid, string passphrase, string channel_id)
- {
- printf("requestWifi ssid = %s, passphrase = %s, channel_id = %s\n",ssid.c_str(), passphrase.c_str(), channel_id.c_str());
- mWifiInfo.ssid = ssid;
- mWifiInfo.passphrase = passphrase;
- mWifiInfo.channel_id = channel_id;
- }
- void CarLinkPlayer::requestLicense(string license)
- {
- mLicense = license;
- }
- void CarLinkPlayer::requestInputText(string text)
- {
- if(mPlayer){
- mPlayer->SendInputText(text);
- }
- }
- void CarLinkPlayer::requestInputSelection(int start, int stop)
- {
- if(mPlayer){
- mPlayer->SendInputSelection(start, stop);
- }
- }
- void CarLinkPlayer::requestInputAction(int actionId, int keyCode)
- {
- if(mPlayer){
- mPlayer->SendInputAction(actionId, keyCode);
- }
- }
- void CarLinkPlayer::requestScreenSize(int width, int height)
- {
- if(mPlayer){
- mPlayer->SendScreenSize(width, height);
- }
- }
- void CarLinkPlayer::requestBluetoothCmd(string cmd){
- if(mStartCarLink){
- mPlayer->SendBlueToothCmd(cmd);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- else{
- printf("%s:%s:%d cmd: %s\r\n",__FILE__,__func__,__LINE__,cmd.c_str());
- mVecBlueToothCmd.push_back(cmd);
- }
- }
- void CarLinkPlayer::requestBroadcast(bool enable)
- {
- if(mPlayer){
- mPlayer->SendBroadcast(enable);
- }
- }
- void CarLinkPlayer::requestDelayRecord(int millisecond)
- {
- mMillisecond = millisecond;
- }
- void CarLinkPlayer::requestWifiStateChanged(WifiStateAction action, WifiState state, string phoneIp, string carIp)
- {
- if(mPlayer){
- mPlayer->SendWifiStateChanged(action, state, phoneIp, carIp);
- }
- }
- #endif
- void CarLinkPlayer::app_status(AppStatusMessage appStatusMessage, void *reserved)
- {
- if(appStatusMessage == APP_FOREGROUND){
- mIsRunningBackGround = false;
- #ifdef USE_DBUS
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_FOREGROUND);
- #endif
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- else if(appStatusMessage == APP_BACKGROUND){
- mIsRunningBackGround = true;
- #ifdef USE_DBUS
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_BACKGROUND);
- #endif
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- else if(appStatusMessage == APP_RESERVED){
- long long time = (long long )reserved;
- struct tm *tdate;
- time_t t = time;
- tdate=localtime(&t);
- char *ptime = ctime(&t);
- printf("app_reserved long time = %lld, string time =%s\r\n", time, ptime);
- }
- #ifdef USE_DBUS
- else if(appStatusMessage == APP_MUSIC_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_MUSIC_STARTED);
- }
- else if(appStatusMessage == APP_MUSIC_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_MUSIC_STOPPED);
- }
- else if(appStatusMessage == APP_NAVI_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_NAVI_STARTED);
- }
- else if(appStatusMessage == APP_NAVI_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_NAVI_STOPPED);
- }
- else if(appStatusMessage == APP_VR_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_VR_STARTED);
- }
- else if(appStatusMessage == APP_VR_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_VR_STOPPED);
- }
- else if(appStatusMessage == APP_RECOGNITION_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_RECOGNITION_STARTED);
- }
- else if(appStatusMessage == APP_RECOGNITION_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_RECOGNITION_STOPPED);
- }
- else if(appStatusMessage == APP_PHONE_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_PHONE_STARTED);
- }
- else if(appStatusMessage == APP_PHONE_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_PHONE_STOPPED);
- }
- else if(appStatusMessage == APP_NAVI_SOUND_STARTED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_NAVI_SOUND_STARTED);
- }
- else if(appStatusMessage == APP_NAVI_SOUND_STOPPED){
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_NAVI_SOUND_STOPPED);
- }
- else if(appStatusMessage == APP_VOICE_CMD){
- int cmd = (int )reserved;
- printf("cmd = %d\r\n", cmd);
- ArkDbus::instance()->SendCarCmd(mLinkType, cmd);
- }
- else if(appStatusMessage == APP_LICENSE){
- License *pLicense = (License*)reserved;
- ArkDbus::instance()->SendLicenseStatus(mLinkType, pLicense->activate, pLicense->code, pLicense->msg);
- }
- else if(appStatusMessage == APP_INPUTINFO){
- InputInfo *pInputInfo = (InputInfo*)reserved;
- ArkDbus::instance()->SendInputStart(mLinkType, pInputInfo->inputType, pInputInfo->imeOptions, pInputInfo->rawText,
- pInputInfo->minLines,pInputInfo->maxLines, pInputInfo->maxLength);
- }
- else if(appStatusMessage == APP_VRTEXT){
- VRTextInfo *pVRTextInfo = (VRTextInfo*)reserved;
- ArkDbus::instance()->SendVRTextinfoChange(mLinkType,pVRTextInfo->type, pVRTextInfo->sequence, pVRTextInfo->plainText, pVRTextInfo->htmlText );
- }
- else if(appStatusMessage == APP_VERSION){
- char* ver = (char*)reserved;
- printf("ver = %s\n",ver);
- ArkDbus::instance()->SendCarLinkVersion(mLinkType, ver);
- }
- else if(appStatusMessage == APP_VOICE_DUCK){
- DuckInfo *pDuckInfo = (DuckInfo*)reserved;
- ArkDbus::instance()->SendLinkDuckAudio(mLinkType, pDuckInfo->inDurationSecs, pDuckInfo->volume);
- printf("duck appStatusMessage inDurationSecs = %lf, inVolume = %lf\r\n", pDuckInfo->inDurationSecs, pDuckInfo->volume);
- }
- else if(appStatusMessage == APP_VOICE_UNDUCK){
- double* inDurationSecs = (double*) reserved;
- ArkDbus::instance()->SendLinkUnduckAudio(mLinkType, *inDurationSecs);
- printf("unduck appStatusMessage inDurationSecs = %lf\r\n", *inDurationSecs);
- }
- else if(appStatusMessage == APP_PINCODE){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- string* pinCode = (string*) reserved;
- ArkDbus::instance()->SendPinCode(mLinkType, *pinCode);
- }
- else if(appStatusMessage == APP_BT_CMD){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- string *cmd = (string*)reserved;
- printf("======= send bluetooth cmd = %s", cmd->c_str());
- ArkDbus::instance()->SendBlueToothCmd(mLinkType, *cmd);
- }
- else if(appStatusMessage == APP_CARLINK_INIT_DONE){
- ArkDbus::instance()->SendCarLinkInitDone(mLinkType);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- #endif
- if(mAppStatus){
- mAppStatus(appStatusMessage, reserved);
- }
- }
- void CarLinkPlayer::carlink_connect_state(ConnectedStatus status, PhoneType type)
- {
- switch (status)
- {
- case CONNECT_STATUS_CONNECTING:
- {
- // todo 正在连接
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- #ifdef USE_DBUS
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_CONNECTTING);
- #endif
- mChangeMode = true;
- break;
- }
- case CONNECT_STATUS_CONNECT_SUCCEED:
- {
- // todo 连接成功
- mChangeMode = false;
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- //emit Change(false);
- #ifdef USE_DBUS
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_CONNECTED);
- #endif
- printf("connect succeed\r\n");
- break;
- }
- case CONNECT_STATUS_CONNECT_FAILED:
- case CONNECT_STATUS_DISCONNECTED:
- case CONNECT_STATUS_APP_EXIT:
- case CONNECT_STATUS_INTERRUPTED_BY_APP:
- {
- // todo 连接断开
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- printf("connect disconnected :%d\r\n",status);
- Stop();
- #ifdef USE_DBUS
- ArkDbus::instance()->SendLinkStatus(mLinkType, mLinkMode, DBUS_DISCONNECTED);
- #endif
- if(mLinkType == Carplay && mLinkMode == Wired){
- #ifdef USE_DBUS
- ArkDbus::instance()->SendPhoneType(mPhonetype, DBUS_DEVICE_DEATTACHED);
- #endif
- }
- mChangeMode = false;
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- break;
- }
- default:
- break;
- }
- mConnectStatus = status;
- mPhonetype = type;
- }
- void CarLinkPlayer::usb_state(ConnectedStatus status, PhoneType type)
- {
- std::lock_guard<std::mutex> lock(mMutex);
- mConnectStatus = status;
- mPhonetype = type;
- mLinkMode = Wired;
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(status == CONNECT_STATUS_DEVICE_ATTACHED){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(!mChangeMode){
- if(mUsbState){
- mUsbState(status, type);
- }
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- #ifdef USE_DBUS
- ArkDbus::instance()->SendPhoneType(mPhonetype, DBUS_DEVICE_ATTACHED);
- #else
- if(type == Phone_IOS)
- Start(Carplay, Wired);
- else if(type == Phone_Android)
- Start(Android_Auto, Wired);
- #endif
- }
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- else if(status == CONNECT_STATUS_DEVICE_DEATTACHED){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(mUsbState){
- mUsbState(status, type);
- }
- #ifdef USE_DBUS
- ArkDbus::instance()->SendPhoneType(mPhonetype, DBUS_DEVICE_DEATTACHED);
- #endif
- }
- }
- void CarLinkPlayer::registerAppStatus(void(*pAppStatusCallback)(int,void*))
- {
- mAppStatus = pAppStatusCallback;
- }
- void CarLinkPlayer::registerUsbState(void(*pUsbStateCallback)(int,int))
- {
- mUsbState = pUsbStateCallback;
- }
- void CarLinkPlayer::Start(LinkType linkType, LinkMode linkMode)
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer = mpLinkAssist->Initialize(linkType);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->GetIniConfig(mpLinkAssist);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->RegisterConnectCallback(std::bind(&CarLinkPlayer::carlink_connect_state,this, std::placeholders::_1,std::placeholders::_2));
- if(mLicense.empty())
- mPlayer->SendLisenceCode("TEST036514313165461313");
- else
- mPlayer->SendLisenceCode(mLicense);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(!(mScreenWidth == 0 || mScreenHeight == 0)){
- mPlayer->SendScreenSize(mScreenWidth, mScreenHeight);
- }
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->SendNightMode(mNightMode);
- printf("%s:%s:%d right hand driver =%d\r\n",__FILE__,__func__,__LINE__,mRightHandDriver);
- mPlayer->SendRightHandDriver(mRightHandDriver);
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->SendDelayRecord(mMillisecond);
- mPlayer->SendCarBluetooth(mBlueToothInfo.name, mBlueToothInfo.addr, mBlueToothInfo.pin);
- if(linkMode == Wireless)
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(!mstrBtAddress.empty()){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->SendPhoneBluetooth(mstrBtAddress);
- }
- if(!mstrIpAddress.empty()){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->SendIphoneMacAddress(mstrIpAddress);
- }
- if(!(mWifiInfo.ssid.empty()| mWifiInfo.passphrase.empty() | mWifiInfo.channel_id.empty())){
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->SendCarWifi(mWifiInfo);
- }
- }
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- mPlayer->RegisterAppStatusCallback(std::bind(&CarLinkPlayer::app_status,this, std::placeholders::_1,std::placeholders::_2));
- mPlayer->Initialize(linkMode, mPhonetype);
- if(linkType == HiCar && linkMode == Wireless){
- for(int i = 0; i< mVecBlueToothCmd.size();i++){
- mPlayer->SendBlueToothCmd(mVecBlueToothCmd[i]);
- printf("%s:%s:%d mVecBlueToothCmd[%d]: %s\r\n",__FILE__,__func__,__LINE__,i,mVecBlueToothCmd[i].c_str());
- }
- }
- mVecBlueToothCmd.clear();
- mPlayer->Start();
- mStartCarLink = true;
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
- void CarLinkPlayer::Stop()
- {
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- if(mpLinkAssist)
- mpLinkAssist->Release();
- printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
- }
|