${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include/slices/main
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/TestGPS/include
)
set(PRIVATE_HEADER
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialStaticImgView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser/DialBinParser.cpp
)
+if("TEST_GPS_UI" IN_LIST DEFINES)
+set(PRIVATE_HEADER
+ ${PRIVATE_HEADER}
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/TestGPS/include
+)
+set(SOURCES
+ ${SOURCES}
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/TestGPS/src/GPSView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/TestGPS/src/TestGPSView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/TestGPS/src/TestGPSPresenter.cpp
+)
+endif()
if("SUPPORT_ALIPAY_SEC" IN_LIST DEFINES)
set(SOURCES
${SOURCES}
VIEW_ADD_CARD,
VIEW_SET_DIAL,
VIEW_SET_DIAL_STYLE,
+ VIEW_GPS_TESTUI, //GPS 测试页面
VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
VIEW_EXTERN_APP = 0xFFFE, // 三方应用
VIEW_INVALIDE_APP = 0xFFFF,
void InitCompassSlice(void);
void InitOfflineVoice(void);
void InitConnectPhoneSlice(void);
+ #ifdef TEST_GPS_UI
+ void InitGPSTestSlice(void);
+ #endif
void InitMainTempSlice(void);
void InitIndoorWalkSlice(void);
void InitRebootSlice(void);
#include "SetDialPresenter.h"
#include "SetDialStylePresenter.h"
#include "SetDialStyleView.h"
+#ifdef TEST_GPS_UI
+#include "TestGPSView.h"
+#include "TestGPSPresenter.h"
+#endif
#ifdef JS_ENABLE
#include "product_adapter.h"
#endif
{VIEW_ADD_CARD, &NativeLauncher::InitAddCardSlice},
{VIEW_SET_DIAL, &NativeLauncher::InitSetDialSlice},
{VIEW_SET_DIAL_STYLE, &NativeLauncher::InitSetDialStyleSlice},
+ #ifdef TEST_GPS_UI
+ {VIEW_GPS_TESTUI, &NativeLauncher::InitGPSTestSlice},
+ #endif
};
static const ViewIdToString VIEW_MAPPER[] = {
{VIEW_ADD_CARD, "AddCard"},
{VIEW_SET_DIAL, "SetDial"},
{VIEW_SET_DIAL_STYLE, "SetDialStyle"},
+ {VIEW_GPS_TESTUI, "GPSTest"},
};
NativeLauncher::NativeLauncher() {}
}
NativeAbility::GetInstance().AddSliceProxy(VIEW_REBOOT, rebootView);
}
-
+#ifdef TEST_GPS_UI
+void NativeLauncher::InitGPSTestSlice(void)
+{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::TestGPSUI");
+ SliceProxy *gpsView = new AbilitySliceProxy<TestGPSView, TestGPSPresenter>;
+ if (gpsView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gpsView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_GPS_TESTUI, gpsView);
+}
+#endif
void NativeLauncher::InitConnectPhoneSlice(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::ConnectPhoneView");
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectSelect View\r
+ * Create: 2022-03-22\r
+ */\r
+\r
+#ifndef GPS_VIEW_H\r
+#define GPS_VIEW_H\r
+\r
+#include "View.h"\r
+#include "TestGPSPresenter.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_view_group.h"\r
+#include <string>\r
+\r
+namespace OHOS {\r
+class GPSView {\r
+public:\r
+ GPSView();\r
+ ~GPSView();\r
+ static GPSView *GetInstance();\r
+ UIViewGroup *InitShowUpView(void);\r
+ void updateGPSdata(std::string gpsdata);\r
+ void updateGPSstat(std::string gpsdata);\r
+private:\r
+ void ShowUpTitleLabel(void);\r
+ void CreateUIButton(void);\r
+ UILabel *titleLabel{nullptr};\r
+ UILabel *msgLabel{nullptr};\r
+ UIButton *cancelButton{nullptr};\r
+ UIButton *confirmButton{nullptr};\r
+ UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // GPS_VIEW_H
\ No newline at end of file
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone Presenter\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#ifndef TEST_GPS_PRESENTER_H\r
+#define TEST_GPS_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "NativeLauncher.h"\r
+#include "NativeAbility.h"\r
+#include "BaseView.h"\r
+\r
+namespace OHOS {\r
+enum TestGPSPresenterNum : uint8_t {\r
+ GPSVIEW = 0,\r
+ GPSVIEW_MAX,\r
+};\r
+\r
+#define GPS_CANCEL_BUTTON "close"\r
+#define GPS_CONFIRM_BUTTON "open"\r
+#define GPS_BACK_BUTTON "backButton"\r
+\r
+#define TEST_GPS_VIEW "testGPSView"\r
+\r
+class TestGPSView;\r
+class TestGPSPresenter : public Presenter<TestGPSView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener {\r
+public:\r
+ TestGPSPresenter();\r
+ ~TestGPSPresenter();\r
+ static TestGPSPresenter *GetInstance();\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ bool OnClick(UIView& view, const ClickEvent& event) override;\r
+ bool OnDrag(UIView& view, const DragEvent& event) override;\r
+private:\r
+};\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone View\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#ifndef TEST_GPS_VIEW_H\r
+#define TEST_GPS_VIEW_H\r
+\r
+#include "View.h"\r
+#include "TestGPSPresenter.h"\r
+#include "GPSView.h"\r
+#include "AppGroupView.h"\r
+#include "animator/animator.h"\r
+#include "sys/time.h"\r
+namespace OHOS {\r
+constexpr int16_t NUM_GPS_CONTAINER = 1;\r
+\r
+class TestGPSPresenter;\r
+class GPSUpdateAnimatorCallback;\r
+class TestGPSView : public View<TestGPSPresenter> {\r
+public:\r
+ TestGPSView();\r
+ ~TestGPSView();\r
+ static TestGPSView *GetInstance();\r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void ChangeView(int16_t hideView, int16_t showView);\r
+ void updateGPS();\r
+\r
+private:\r
+ bool ChangeGPSView(int16_t hideView, int16_t thisView);\r
+ bool CheckViewParam(int16_t hideView, int16_t showView);\r
+ GPSView *gpsUIView{nullptr};\r
+ UIViewGroup *container[NUM_GPS_CONTAINER]{nullptr};\r
+ typedef bool (TestGPSView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+ Animator *gpsUpdateAnimator{nullptr};\r
+ PreprosssChangeView preProcessView[NUM_GPS_CONTAINER];\r
+ GPSUpdateAnimatorCallback *callBack;\r
+};\r
+\r
+class GPSUpdateAnimatorCallback : public AnimatorCallback {\r
+public:\r
+ explicit GPSUpdateAnimatorCallback(TestGPSView *GPSView) : gpsview(GPSView) {}\r
+ ~GPSUpdateAnimatorCallback() override {}\r
+\r
+ void Callback(UIView *view) override\r
+ {\r
+\r
+ if (gpsview!=nullptr)\r
+ {\r
+ gpsview->updateGPS();\r
+ \r
+ }else{\r
+ printf("gps animator init fail");\r
+ }\r
+ }\r
+private:\r
+ TestGPSView *gpsview=nullptr;\r
+ \r
+};\r
+} // namespace OHOS\r
+#endif // DISTEST_GPS_VIEW_H
\ No newline at end of file
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectSelect View\r
+ * Create: 2022-03-22\r
+ */\r
+#include "GPSView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "TestGPSPresenter.h"\r
+\r
+namespace OHOS {\r
+static GPSView *g_pGPSView{nullptr};\r
+\r
+GPSView::GPSView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GPSView::GPSView");\r
+ g_pGPSView = this;\r
+}\r
+\r
+GPSView::~GPSView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GPSView::~GPSView");\r
+ group->RemoveAll();\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete msgLabel;\r
+ msgLabel = nullptr;\r
+ delete cancelButton;\r
+ cancelButton = nullptr;\r
+ delete confirmButton;\r
+ confirmButton = nullptr;\r
+ g_pGPSView = nullptr;\r
+}\r
+\r
+GPSView *GPSView::GetInstance()\r
+{\r
+ return g_pGPSView;\r
+}\r
+void GPSView::updateGPSstat(std::string gpsdata)\r
+{\r
+ if (titleLabel != nullptr) {\r
+ titleLabel->SetText(gpsdata.c_str());\r
+ }\r
+}\r
+void GPSView::updateGPSdata(std::string gpsdata)\r
+{\r
+ if (msgLabel != nullptr) {\r
+ msgLabel->SetText(gpsdata.c_str());\r
+ }\r
+}\r
+void GPSView::ShowUpTitleLabel()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GPSView::ShowUpTitleLabel");\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPSView titleLabel new fail");\r
+ return;\r
+ }\r
+ titleLabel->SetPosition(65, 50, 324, 160); // 65:x, 100:y, 324:width, 160:height\r
+ titleLabel->SetText("GPS测试");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
+ titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ group->Add(titleLabel);\r
+ }\r
+ if (msgLabel == nullptr) {\r
+ msgLabel = new UILabel();\r
+ if (msgLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPSView msgLabel new fail");\r
+ return;\r
+ }\r
+ msgLabel->SetPosition(65, 100, 324, 160); // 65:x, 100:y, 324:width, 160:height\r
+ msgLabel->SetText("");\r
+ msgLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); // 35:font data\r
+ msgLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+ msgLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ msgLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ group->Add(msgLabel);\r
+ }\r
+ \r
+}\r
+\r
+void GPSView::CreateUIButton()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GPSView::CreateUIButton");\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::TestGPSPresenter::GetInstance();\r
+ if (clickListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
+ return;\r
+ }\r
+ if (cancelButton == nullptr) {\r
+ cancelButton = new UIButton();\r
+ if (cancelButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPSView cancelButton new fail");\r
+ return;\r
+ }\r
+ cancelButton->SetPosition(85, 400, 90, 90); // 85:x, 320:y, 90:width, 90:height\r
+ cancelButton->SetViewId(GPS_CANCEL_BUTTON);\r
+ cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
+ cancelButton->SetOnClickListener(clickListener);\r
+ group->Add(cancelButton);\r
+ }\r
+ if (confirmButton == nullptr) {\r
+ confirmButton = new UIButton();\r
+ if (confirmButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPSView confirmButton new fail");\r
+ return;\r
+ }\r
+ confirmButton->SetPosition(279, 400, 90, 90); // 279:x, 320:y, 90:width, 90:height\r
+ confirmButton->SetViewId(GPS_CONFIRM_BUTTON);\r
+ confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
+ confirmButton->SetOnClickListener(clickListener);\r
+ group->Add(confirmButton);\r
+ }\r
+}\r
+\r
+UIViewGroup *GPSView::InitShowUpView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GPSView init");\r
+ if (group == nullptr) {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+ return nullptr;\r
+ }\r
+ group->SetPosition(0, 0);\r
+ group->SetWidth(HORIZONTAL_RESOLUTION);\r
+ group->SetHeight(VERTICAL_RESOLUTION);\r
+ }\r
+ ShowUpTitleLabel();\r
+ CreateUIButton();\r
+ UIView::OnDragListener *connectDragListener = (UIView::OnDragListener *)OHOS::TestGPSPresenter::GetInstance();\r
+ if (connectDragListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ group->SetOnDragListener(connectDragListener);\r
+ group->SetViewId(TEST_GPS_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
+}
\ No newline at end of file
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone Presenter\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#include "TestGPSPresenter.h"\r
+#include "TestGPSView.h"\r
+#include "BluetoothModel.h"\r
+#include "bts_br_gap.h"\r
+#include "bts_le_gap.h"\r
+#include "drag_event.h"\r
+#include "cmsis_os.h"\r
+#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+#include "custom_utils.h"\r
+#include "gnss_ctl.h"\r
+namespace OHOS {\r
+\r
+static TestGPSPresenter *g_pTestGPSPresenter = nullptr;\r
+\r
+TestGPSPresenter::TestGPSPresenter()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSPresenter::TestGPSPresenter");\r
+ g_pTestGPSPresenter = this;\r
+}\r
+\r
+TestGPSPresenter::~TestGPSPresenter()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSPresenter::~TestGPSPresenter");\r
+ g_pTestGPSPresenter = nullptr;\r
+}\r
+\r
+TestGPSPresenter *TestGPSPresenter::GetInstance()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSPresenter GetInstance");\r
+ return g_pTestGPSPresenter;\r
+}\r
+\r
+void TestGPSPresenter::OnStart()\r
+{\r
+ Presenter<TestGPSView>::OnStart();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSPresenter::On Start ");\r
+ ScreenAlwaysOnCtr(1);\r
+}\r
+\r
+void TestGPSPresenter::OnPause(void) {}\r
+\r
+void TestGPSPresenter::OnResume(void) {}\r
+\r
+void TestGPSPresenter::OnStop(void) {\r
+ ScreenAlwaysOnCtr(0);\r
+}\r
+\r
+bool TestGPSPresenter::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+ UNUSED(event);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");\r
+ if (strcmp(view.GetViewId(), GPS_CANCEL_BUTTON) == 0) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS Off OnClick");\r
+ gnss_stop();\r
+ } else if (strcmp(view.GetViewId(), GPS_CONFIRM_BUTTON) == 0) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS On OnClick");\r
+ gnss_start();\r
+ } else if (strcmp(view.GetViewId(), GPS_BACK_BUTTON) == 0) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Cancel OnClick");\r
+ } \r
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+ return true;\r
+}\r
+\r
+bool TestGPSPresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+ std::string viewId = view.GetViewId();\r
+ if ((viewId == TEST_GPS_VIEW) ) {\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSPresenter::OnDrag");\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+ }\r
+ }\r
+ return true;\r
+}\r
+\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone View\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#include "TestGPSView.h"\r
+#include "components/ui_label.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include <string>\r
+#include "NMEA0183.h"\r
+#include "gnss_sample.h"\r
+\r
+namespace OHOS {\r
+static TestGPSView *g_pTestGPSView{nullptr};\r
+\r
+TestGPSView::TestGPSView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::TestGPSView");\r
+ preProcessView[GPSVIEW] = &TestGPSView::ChangeGPSView;\r
+ g_pTestGPSView = this;\r
+ callBack = new GPSUpdateAnimatorCallback(g_pTestGPSView);\r
+ if (callBack == nullptr) {\r
+ GRAPHIC_LOGE("callBack new fail\n");\r
+ return ;\r
+ }\r
+ gpsUpdateAnimator = new Animator(callBack, (OHOS::UIView*)g_pTestGPSView, 1000, true);\r
+ if (gpsUpdateAnimator == nullptr) {\r
+ GRAPHIC_LOGE("gpsUpdateAnimator new fail\n");\r
+ return ;\r
+ }\r
+ gpsUpdateAnimator->Start();\r
+}\r
+\r
+TestGPSView::~TestGPSView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::~TestGPSView");\r
+ if (gpsUpdateAnimator != nullptr) {\r
+ gpsUpdateAnimator->Stop();\r
+ delete gpsUpdateAnimator;\r
+ gpsUpdateAnimator = nullptr;\r
+ }\r
+ g_pTestGPSView = nullptr;\r
+}\r
+\r
+TestGPSView *TestGPSView::GetInstance()\r
+{\r
+ return g_pTestGPSView;\r
+}\r
+\r
+static char msgtmp[256]={0};\r
+\r
+void TestGPSView::updateGPS()\r
+{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TestGPSView::updateGPS");\r
+ if (gpsUIView != nullptr) {\r
+ \r
+ gps_data_t * gpsdata=getGPSGlobaldata();\r
+ gps_data_t gpsd={0};\r
+ if (gpsdata->last_gps_time_ms>0)\r
+ {\r
+ memcpy(&gpsd,gpsdata,sizeof(gps_data_t));\r
+ }\r
+ memset_s(msgtmp,sizeof(msgtmp),0,sizeof(msgtmp)); \r
+ dump_location_data_to_buf(&gpsd,msgtmp,sizeof(msgtmp));\r
+ PRINT("dump %s\n",msgtmp);\r
+ gpsUIView->updateGPSdata(msgtmp);\r
+ if (getGnssServerStat()==1)\r
+ {\r
+ gpsUIView->updateGPSstat("GPS已开启");\r
+ }else{\r
+ gpsUIView->updateGPSstat("GPS已关闭");\r
+ }\r
+ }\r
+}\r
+void TestGPSView::OnStart()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::~OnStart");\r
+ View<TestGPSPresenter>::OnStart();\r
+ BaseView::RootView(Color::Black().full);\r
+ ChangeView(GPSVIEW_MAX, GPSVIEW);\r
+ RootView::GetInstance()->Invalidate();\r
+ return;\r
+}\r
+\r
+void TestGPSView::OnSetUpView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::~OnSetUpView");\r
+ View<TestGPSPresenter>::OnSetUpView();\r
+ Draw();\r
+}\r
+\r
+void TestGPSView::OnTearDownView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::~OnTearDownView");\r
+ View<TestGPSPresenter>::OnTearDownView();\r
+ return;\r
+}\r
+\r
+void TestGPSView::OnStop()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::~OnStop");\r
+ View<TestGPSPresenter>::OnStop();\r
+ if (container_ != nullptr) {\r
+ container_->RemoveAll();\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ RootView::GetInstance()->ClearOnKeyActListener();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+}\r
+\r
+bool TestGPSView::ChangeGPSView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeGPSView");\r
+ gpsUIView = new GPSView();\r
+ if (gpsUIView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gpsUIView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = gpsUIView->InitShowUpView();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ return true;\r
+}\r
+\r
+bool TestGPSView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+ if (showView < 0 || showView >= GPSVIEW_MAX) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TestGPSView::CheckViewParam showView err.");\r
+ return false;\r
+ }\r
+\r
+ if (hideView < 0 || hideView > GPSVIEW_MAX) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TestGPSView::CheckViewParam hideView err.");\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+void TestGPSView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView::ChangeView %d, %d", hideView, showView);\r
+\r
+ if (!CheckViewParam(hideView, showView)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TestGPSView::CheckViewParam failed.");\r
+ return;\r
+ }\r
+\r
+ PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+ if (!(this->*tmpPreProcessView)(hideView, showView)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TestGPSView::ChangeView %d %dfailed", showView, hideView);\r
+ return;\r
+ }\r
+ if (hideView != GPSVIEW_MAX) {\r
+ if (container[hideView] == nullptr) {\r
+ return;\r
+ }\r
+ container[hideView]->SetVisible(false);\r
+ }\r
+ container[showView]->SetVisible(true);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TestGPSView:: ChangeView end!!!%d", showView);\r
+ RootView::GetInstance()->Invalidate();\r
+}\r
+}
\ No newline at end of file
{
int index = 0;
settings[index++] = {VIEW_BLUETOOTH_EARPHONE, PNG_BLUETOOTH_STITLE, "蓝牙耳机", true};
+
+ #ifdef TEST_GPS_UI
+ settings[index++] = {VIEW_GPS_TESTUI, PNG_CONNECT_PHONE_IMAGE, "GPS", true};
+ #endif
#ifdef TEST_4G_UI
settings[index++] = {VIEW_CONNECT_PHONE, PNG_CONNECT_PHONE_IMAGE, "4G开关", true};
#else
#"MEM_CHECK",
#'ENABLE_WEBSOCKET',
'SINGLE_USER_PARTITION',
+ 'TEST_GPS_UI',
'BOARD_U8',
'GNSS_UART0',
'SUPPORT_AUTO_OTA_SERVER',
$PNTH002,,T,0.000000,0,200,0.000000,3,0.000000*4B\r
\r
\r
- gps_nmea gps_nmea_temp; /// 定义解析时用到的暂存状态数据,只供解析时使用 \r
- gps_data gps_data1; /// GPS解析得到的最终数据,用户可使用 \r
+ gps_nmea_t gps_nmea_temp; /// 定义解析时用到的暂存状态数据,只供解析时使用 \r
+ gps_data_t gps_data1; /// GPS解析得到的最终数据,用户可使用 \r
unsigned int index = 0;\r
\r
for(index=0; index<sizeof(nmea); ++index)\r
\r
#ifndef NMEA0183_H\r
#define NMEA0183_H\r
-\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
/*************** 宏定义 *******************/ \r
#define current_time_ms() 1\r
\r
*/\r
typedef enum _location_system\r
{\r
- GNSS, //GN\r
+ GNSS_, //GN\r
GPS_L1C_A=1, //GP\r
GLONASS_L1OF, //GL\r
Galileo_E1C, //GA\r
unsigned int gsvpagecount;\r
unsigned int gsvpage;\r
unsigned int startnum;\r
- }gps_nmea;\r
+ }gps_nmea_t;\r
\r
/* 时间结构体 */ \r
typedef struct _time\r
unsigned char num_sats; /* 可见卫星颗数 */\r
unsigned char have_gps_yaw; /* GPHDT航向字段有效 */\r
unsigned int last_gps_time_ms; /* 最后获取GPS信息时的时间 ms */\r
- }gps_data;\r
+ }gps_data_t;\r
\r
/* NMEA0183结构体对象 */\r
typedef struct _nmea0183\r
{\r
- gps_nmea gpsParse;\r
- gps_data gpsData;\r
+ gps_nmea_t gpsParse;\r
+ gps_data_t gpsData;\r
unsigned char (*nmea_decode)(struct _nmea0183* pnmea, char c); \r
}NMEA0183; \r
\r
unsigned char nmea_decode(NMEA0183* pnmea, char c);\r
char* get_gps_status_str(gps_status status);\r
char* get_gps_sentence_type_str(sentence_types sentencetype);\r
-void dump_location_data(gps_data *locationdata);\r
+void dump_location_data(gps_data_t *locationdata);\r
+void dump_location_data_to_buf(gps_data_t *locationdata,char* buf,int max_buflen);\r
+gps_data_t * getGPSGlobaldata(void);\r
\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
#endif\r
\r
\r
#ifndef __CUSTOM_GNSS_CTL_H
#define __CUSTOM_GNSS_CTL_H
-
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
#include "stdint.h"
#include "errcode.h"
errcode_t gnss_start(void);
errcode_t gnss_stop(void);
uint8_t is_gnss_on(void);
-
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
#endif
}\r
\r
#include "NMEA0183.h"\r
-NMEA0183 g_nmeadata={0};\r
-gps_data g_global_gpsData={0};\r
+static NMEA0183 g_nmeadata={0};\r
+gps_data_t g_global_gpsData={0};\r
+\r
static int decode_nmea(char c)\r
{\r
int ret=0;\r
- if(nmea_decode(&g_nmeadata,c) ) ///调用解析函数\r
+ ret=0;\r
+ if(nmea_decode(&g_nmeadata,c) ==1 ) ///调用解析函数\r
{\r
- // dump_nmea_str(&(g_nmeadata.gpsParse));\r
- if (g_nmeadata.gpsParse.sentence_type == GPS_SENTENCE_TH002)\r
+ dump_nmea_str(&(g_nmeadata.gpsParse));\r
+ if (g_nmeadata.gpsParse.sentence_type == GPS_SENTENCE_TH002 )\r
{\r
//一组数据最后一条\r
- memcpy_s(&g_global_gpsData,sizeof(gps_data),&(g_nmeadata.gpsData),sizeof(gps_data));\r
+ memcpy_s(&g_global_gpsData,sizeof(gps_data_t),&(g_nmeadata.gpsData),sizeof(gps_data_t));\r
ret = 1;\r
memset(&g_nmeadata,0,sizeof(g_nmeadata));\r
}\r
\r
return ret;\r
}\r
+gps_data_t * getGPSGlobaldata(void)\r
+{\r
+ return &g_global_gpsData;\r
+}\r
+\r
+static int g_is_gnss_poweron=0;\r
+static int g_is_gnss_logon=0;\r
+static int g_gnss_stopflag=0;\r
\r
static void ListenGnssData(tiot_handle handle)\r
{\r
g_gnssServiceBuff[ret] = '\0';\r
char* pbuf=(char *)&g_gnssServiceBuff[MSG_CONTENT_IDX];\r
printf("%s\n", pbuf);\r
- fprintf(g_gnssLogFp, "%s\n", pbuf);\r
+ if (g_is_gnss_logon)\r
+ fprintf(g_gnssLogFp, "%s\n", pbuf);\r
for (int index=0;index < ret ;index++)\r
{\r
- if (decode_nmea(pbuf[index]))\r
+ if (decode_nmea(pbuf[index])==1)\r
{\r
- dump_location_data(&g_global_gpsData);\r
+ // dump_location_data(&g_global_gpsData);\r
+ printf("decode_nmea done\r\n");\r
}\r
}\r
}\r
printf("\ncnt enough\n");\r
break;\r
}\r
+ if (g_gnss_stopflag == 1)\r
+ {\r
+ break;\r
+ }\r
}\r
}\r
+void GnssServerStop(void)\r
+{\r
+ g_gnss_stopflag=1;\r
+}\r
+int getGnssServerStat(void)\r
+{\r
+ return g_is_gnss_poweron;\r
+}\r
\r
-void GnssExecuteSamples(void)\r
+void GnssServerStart(void)\r
{\r
- uapi_pm_add_sleep_veto(PM_ID_SYS);\r
printf("\nenter gnss samples\n");\r
+ if(g_is_gnss_poweron == 1)\r
+ {\r
+ printf("gnss already on\r\n");\r
+ return ;\r
+ }\r
+ uapi_pm_add_sleep_veto(PM_ID_SYS);\r
+ g_is_gnss_poweron = 1;\r
+ g_gnss_stopflag = 0;\r
// Step1: init\r
int32_t ret = tiot_service_init();\r
if (ret != 0) {\r
}\r
\r
// 打开日志文件\r
- g_gnssLogFp = fopen("/user/gnss.log", "w");\r
- if (g_gnssLogFp == NULL) {\r
- printf("\nerror: open log file error\n");\r
- return;\r
+ if (g_is_gnss_logon)\r
+ {\r
+ g_gnssLogFp = fopen("/user/gnss.log", "w");\r
+ if (g_gnssLogFp == NULL) {\r
+ printf("\nerror: open log file error\n");\r
+ return;\r
+ }\r
}\r
printf("\nbefore open tiot service\n");\r
\r
// Step7: power off gnss\r
tiot_service_close(handle);\r
// 关日志文件\r
- fclose(g_gnssLogFp);\r
- g_gnssLogFp = NULL;\r
+ if (g_is_gnss_logon)\r
+ {\r
+ fclose(g_gnssLogFp);\r
+ g_gnssLogFp = NULL;\r
+ }\r
// Step8: deinit\r
tiot_service_deinit();\r
uapi_pm_remove_sleep_veto(PM_ID_SYS);\r
+ g_is_gnss_poweron=0;\r
printf("\nfinish gnss samples\n");\r
}
\ No newline at end of file
*/\r
#ifndef GNSS_SAMPLE_H\r
#define GNSS_SAMPLE_H\r
-\r
-void GnssExecuteSamples(void);\r
-\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+void GnssServerStart(void);\r
+void GnssServerStop(void);\r
+int getGnssServerStat(void);\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
#endif
\ No newline at end of file
\r
#include "NMEA0183.h"\r
+#ifndef NOUTILS\r
+#include "custom_utils.h"\r
+#include <securec.h>\r
+#endif\r
#include <stdio.h>\r
+\r
static short int from_hex(char a);\r
-static unsigned char nmea_term_complete(gps_nmea* pnmea, gps_data* pdata);\r
+static unsigned char nmea_term_complete(gps_nmea_t* pnmea, gps_data_t* pdata);\r
static int sring_to_int(const char* pstr, unsigned char* b);\r
static int int_pow(int value, unsigned int count);\r
static double double_pow(double value, unsigned int count);\r
static unsigned char int_to_string(int value, char* pdest, unsigned int intgr) ;\r
static double string_to_float(const char* pstr, unsigned char* b); \r
static int sring_to_int(const char* pstr, unsigned char* b); \r
-static int make_date_time(gps_data* pdata, unsigned int date, unsigned int time);\r
+static int make_date_time(gps_data_t* pdata, unsigned int date, unsigned int time);\r
\r
/* GPS数据解析 */ \r
unsigned char nmea_decode(NMEA0183* nmea, char c)\r
}\r
\r
/* 处理单个字段域数据 */\r
-static unsigned char nmea_term_complete(gps_nmea* pnmea, gps_data* pdata)\r
+static unsigned char nmea_term_complete(gps_nmea_t* pnmea, gps_data_t* pdata)\r
{\r
if((void*)0==pnmea || (void*)0==pdata) return 0;\r
// handle the last term in a message\r
{\r
if (pnmea->gps_data_good) \r
{\r
- unsigned int now = current_time_ms();\r
- \r
+ unsigned int now = 1 ;\r
+#ifndef NOUTILS\r
+ uapi_get_timestampe_ms(&now);\r
+#endif\r
switch (pnmea->sentence_type) \r
{\r
case GPS_SENTENCE_RMC:\r
pdata->ground_speed = pnmea->new_speed;\r
pdata->ground_course = pnmea->new_course;\r
make_date_time(pdata, pnmea->new_date, pnmea->new_time);\r
- pdata->last_gps_time_ms = now;\r
\r
break;\r
case GPS_SENTENCE_GGA:\r
case GPS_SENTENCE_ZDA:\r
pnmea->last_ZDA_ms = now;\r
break;\r
+ case GPS_SENTENCE_TH002:\r
+ pdata->last_gps_time_ms = now;\r
+ break;\r
}\r
} else {\r
switch (pnmea->sentence_type) {\r
pnmea->location_system = Galileo_E1C;\r
break;\r
case 'N':\r
- pnmea->location_system = GNSS;\r
+ pnmea->location_system = GNSS_;\r
break;\r
default:\r
pnmea->location_system = MAX_LOCATION_SYSTEM;\r
pnmea->sentence_type = GPS_SENTENCE_TH001;\r
} else if (strcmp(term_type, "TH002") == 0) {;\r
pnmea->sentence_type = GPS_SENTENCE_TH002;\r
- \r
+ pnmea->gps_data_good = 1;\r
}else if (strcmp(term_type, "VTG") == 0) {\r
pnmea->sentence_type = GPS_SENTENCE_VTG;\r
// VTG may not contain a data qualifier, presume the solution is good\r
}\r
\r
/* 时间处理 传入参数为日月年和毫秒*/ \r
-static int make_date_time(gps_data* pdata, unsigned int date, unsigned int time)\r
+static int make_date_time(gps_data_t* pdata, unsigned int date, unsigned int time)\r
{\r
\r
unsigned char year, mon, day, hour, min, sec;\r
{\r
switch(lsystem)\r
{\r
- case GNSS:\r
+ case GNSS_:\r
return "全球导航卫星系统";\r
case GPS_L1C_A:\r
return "全球定位系统";\r
} \r
}\r
\r
-void dump_nmea_str(gps_nmea *nmeadata)\r
+void dump_nmea_str(gps_nmea_t *nmeadata)\r
{\r
\r
printf("\r\n");\r
printf("%s\r\n",get_gps_location_system_str(nmeadata->location_system));\r
printf("%s\r\n",get_gps_sentence_type_str(nmeadata->sentence_type));\r
+ printf("gps_data_good %d\r\n",nmeadata->gps_data_good);\r
+\r
printf("\r\n");\r
}\r
-void dump_location_data(gps_data*locationdata)\r
+#define DUMP_BUF_SIZE 1024\r
+void dump_location_data_to_buf(gps_data_t *locationdata,char* buf,int max_buflen)\r
{\r
-\r
- printf("\r\n");\r
- printf("20%02d-%02d-%02d,\r\n定位状态(%s)\r\n",\r
+ \r
+ char *tmpbuf=(char*)malloc(DUMP_BUF_SIZE);\r
+ if (tmpbuf == NULL) return;\r
+#ifndef NOUTILS\r
+ memset_s(tmpbuf,DUMP_BUF_SIZE,0,DUMP_BUF_SIZE);\r
+ sprintf_s(tmpbuf,DUMP_BUF_SIZE,"20%02d-%02d-%02d,\n定位状态(%s)\n",\r
locationdata->date_time.year,\r
locationdata->date_time.month,\r
locationdata->date_time.day,\r
get_gps_status_str(locationdata->status)\r
);\r
- printf("可见卫星颗数(%d),\r\n坐标(%f,%f,%d),\r\nhdop(%d),vdop(%d)\r\n",\r
+ strcat_s(buf,max_buflen,tmpbuf);\r
+ memset_s(tmpbuf,DUMP_BUF_SIZE,0,DUMP_BUF_SIZE);\r
+ sprintf_s(tmpbuf,DUMP_BUF_SIZE,"可见卫星颗数(%d),\n坐标(%f,%f,%d),\nhdop(%d),vdop(%d)\n",\r
locationdata->num_sats,\r
locationdata->location.lat,\r
locationdata->location.lng,\r
locationdata->hdop,\r
locationdata->vdop\r
);\r
+ strcat_s(buf,max_buflen,tmpbuf);\r
if (locationdata->startnum>0)\r
{\r
- printf("卫星数[%d]",locationdata->startnum);\r
+ memset_s(tmpbuf,DUMP_BUF_SIZE,0,DUMP_BUF_SIZE);\r
+ sprintf_s(tmpbuf,DUMP_BUF_SIZE,"卫星数[%d](strid,snr)",locationdata->startnum);\r
+ strcat_s(buf,max_buflen,tmpbuf);\r
for(int i=0;i<20;i++)\r
{\r
if (i< locationdata->startnum)\r
{\r
- printf(",(%d,%d)",\r
+ memset_s(tmpbuf,DUMP_BUF_SIZE,0,DUMP_BUF_SIZE);\r
+ sprintf_s(tmpbuf,DUMP_BUF_SIZE,",(%d,%d)",\r
locationdata->starts[i].starID,\r
locationdata->starts[i].snr);\r
+ strcat_s(buf,max_buflen,tmpbuf);\r
+ }\r
+ }\r
+ strcat_s(buf,max_buflen,"\n");\r
+ }else{\r
+ strcat_s(buf,max_buflen,"无卫星数据\n");\r
+ }\r
+#else\r
+ strcat(buf,"\r\n");\r
+ memset(tmpbuf,0,DUMP_BUF_SIZE);\r
+ sprintf(tmpbuf,"20%02d-%02d-%02d,\r\n定位状态(%s)\r\n",\r
+ locationdata->date_time.year,\r
+ locationdata->date_time.month,\r
+ locationdata->date_time.day,\r
+ get_gps_status_str(locationdata->status)\r
+ );\r
+ strcat(buf,tmpbuf);\r
\r
+ memset(tmpbuf,0,DUMP_BUF_SIZE);\r
+ sprintf(tmpbuf,"可见卫星颗数(%d),\r\n坐标(%f,%f,%d),\r\nhdop(%d),vdop(%d)\r\n",\r
+ locationdata->num_sats,\r
+ locationdata->location.lat,\r
+ locationdata->location.lng,\r
+ locationdata->location.alt,\r
+ locationdata->hdop,\r
+ locationdata->vdop\r
+ );\r
+ strcat(buf,tmpbuf);\r
+ if (locationdata->startnum>0)\r
+ {\r
+ memset(tmpbuf,0,DUMP_BUF_SIZE);\r
+ sprintf(tmpbuf,"卫星数[%d](strid,snr)",locationdata->startnum);\r
+ strcat(buf,tmpbuf);\r
+ for(int i=0;i<20;i++)\r
+ {\r
+ if (i< locationdata->startnum)\r
+ {\r
+ memset(tmpbuf,0,DUMP_BUF_SIZE);\r
+ sprintf(tmpbuf,",(%d,%d)",\r
+ locationdata->starts[i].starID,\r
+ locationdata->starts[i].snr);\r
+ strcat(buf,tmpbuf);\r
}\r
}\r
- printf("\r\n");\r
+ strcat(buf,"\r\n");\r
}else{\r
- printf("无卫星数据\r\n");\r
+ strcat(buf,"无卫星数据\r\n");\r
}\r
- printf("\r\n");\r
+ strcat(buf,"\r\n");\r
+#endif\r
+ free(tmpbuf);\r
+}\r
+\r
+void dump_location_data(gps_data_t*locationdata)\r
+{\r
+ char* msgbuf=(char*)malloc(256);\r
+ dump_location_data_to_buf(locationdata,msgbuf,256);\r
+ printf("%s",msgbuf);\r
+ free(msgbuf);\r
}\r
\r
\r
return 0;
}
-int main1(int argc, char** argv)
+int main(int argc, char** argv)
{
char tmpc=0;
}
-int main(int argc, char** argv)
+int main1(int argc, char** argv)
{
for(int i=0; i<sizeof(nmealines1); ++i)
#include "gnss_ctl.h"
#include "gpio.h"
#include "uart_gnss.h"
-
+#include "gnss_sample.h"
errcode_t gnss_init(void)
{
errcode_t gnss_stop(void)
{
- uint8_t cmd = GNSS_CMD_STOP;
- do_gnss_cmd(GNSS_CMD_WRITEDATA, &cmd,1);
- g_gnss_status = 0;
+ // uint8_t cmd = GNSS_CMD_STOP;
+ // do_gnss_cmd(GNSS_CMD_WRITEDATA, &cmd,1);
+ // g_gnss_status = 0;
+ GnssServerStop();
return 0;
}
--- /dev/null
+$Achilles,H7S1,Q35,F1P26.0,0*72\r
+$Achilles,H7S1,Q35,F1P26.0,0*72\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-88,0,,,,,1,1*2D\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,N,0.000000,0,200,0.000000,3,0.000000*51\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-87,0,,,,,1,1*22\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,N,0.000000,0,200,0.000000,3,0.000000*51\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-87,0,,,,,1,1*22\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,N,0.000000,0,200,0.000000,3,0.000000*51\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-88,4,,,,,1,1*29\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,T,0.000000,0,200,0.000000,3,0.000000*4B\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-88,0,,,,,1,1*2D\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,T,0.000000,0,200,0.000000,3,0.000000*4B\r
+$GPGGA,,,,,,0,,,,,,,,*66\r
+$GPGLL,,,,,,V,N*64\r
+$GPGSA,A,1,,,,,,,,,,,,,,,*1E\r
+$GPRMC,,V,,,,,,,,,E,N,V*6C\r
+$GPVTG,,T,,M,,N,,K,N*2C\r
+$GPZDA,,,,,00,00*48\r
+$PNTH000,13,,-87,0,,,,,1,1*22\r
+$PNTH001,0.000000,0.00,0.00,300000.00,1,0,0*1D\r
+$PNTH002,,N,0.000000,0,200,0.000000,3,0.000000*51\r
break;
case GNSS_CMD_START:
// gnss_get_start_cmd(&buf,&len);
- GnssExecuteSamples();
+ GnssServerStart();
last_cfg_cmd_index = 0xFF; //last_cfg_cmd_index=0xFF 代表cfg结束写入,开始检测其他指令
break;
case GNSS_CMD_STOP: