| | |
| | | static pthread_mutex_t platform_tx_mutex = PTHREAD_MUTEX_INITIALIZER; |
| | | static pthread_mutex_t events_mutex = PTHREAD_MUTEX_INITIALIZER; |
| | | |
| | | static struct gpsBrief gbf; |
| | | static struct rtkBrief rbf; |
| | | |
| | | static void AddEvnet(uint32_t event, const uint8_t *data, int length); |
| | | static struct event_t * FetchEvent(void); |
| | | static void RemoveEvent(void); |
| | |
| | | { |
| | | DEBUG("InitPlatform"); |
| | | |
| | | memset(&gbf, 0, sizeof(gbf)); |
| | | memset(&rbf, 0, sizeof(rbf)); |
| | | |
| | | pthread_mutex_init(&platform_tx_mutex, NULL); |
| | | pthread_mutex_init(&events_mutex, NULL); |
| | | |
| | |
| | | |
| | | void ConfigPlatform(const rtk_platform_cfg_t *p) |
| | | { |
| | | DEBUG("ConfigPlatform"); |
| | | DEBUG("配置RTK平台资讯"); |
| | | |
| | | AppTimer_delete(ReqRtkPlatformConfigTimeout); |
| | | |
| | |
| | | if (events & GPS_UPDATE_EVT) { |
| | | DEBUG("GPS_UPDATE_EVT length %d", length); |
| | | const gpsStatus_t *gps = (gpsStatus_t *)data; |
| | | struct gpsBrief brief; |
| | | |
| | | brief.qf = gps->gps_status; |
| | | brief.latitude = gps->latitude; |
| | | brief.longitude = gps->longitude; |
| | | brief.altitude = gps->altitude; |
| | | brief.speed = gps->speed; |
| | | brief.sat_num = gps->satNum; |
| | | sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + gps->YY, gps->MM, gps->DD, gps->hh, gps->mm, gps->ss, gps->mss); |
| | | |
| | | MA_SendGpsBrief(&brief); |
| | | gbf.qf = gps->gps_status; |
| | | gbf.latitude = gps->latitude; |
| | | gbf.longitude = gps->longitude; |
| | | gbf.altitude = gps->altitude; |
| | | gbf.speed = gps->speed; |
| | | gbf.sat_num = gps->satNum; |
| | | gbf.trackTure = gps->trackTure; |
| | | sprintf(gbf.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + gps->YY, gps->MM, gps->DD, gps->hh, gps->mm, gps->ss, gps->mss); |
| | | if (!strcmp(rbf.utc, gbf.utc)) { |
| | | rbf.sat_num = gbf.sat_num; |
| | | rbf.latitude = gbf.latitude; |
| | | rbf.longitude = gbf.longitude; |
| | | rbf.altitude = gbf.altitude; |
| | | rbf.speed = gbf.speed; |
| | | rbf.trackTure = gbf.trackTure; |
| | | MA_SendRtkBrief(&rbf); |
| | | } |
| | | // MA_SendGpsBrief(&brief); |
| | | RequestRtkDownload(gps, 1); |
| | | } |
| | | if (events & RTK_UPDATE_EVT) { |
| | | DEBUG("RTK_UPDATE_EVT length %d", length); |
| | | const rtk_info *rtk = (rtk_info *)data; |
| | | struct rtkBrief brief; |
| | | |
| | | brief.qf = rtk->qf; |
| | | brief.coord_x = rtk->x; |
| | | brief.coord_y = rtk->y; |
| | | brief.heading = rtk->heading; |
| | | brief.pitch = rtk->pitch; |
| | | brief.roll = rtk->roll; |
| | | brief.coord_x_dir = 'N'; |
| | | brief.coord_y_dir = 'E'; |
| | | sprintf(brief.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtk->YY, rtk->MM, rtk->DD, rtk->hh, rtk->mm, rtk->ss, rtk->dss); |
| | | rbf.qf = rtk->qf; |
| | | rbf.coord_x = rtk->y; |
| | | rbf.coord_y = rtk->x; |
| | | rbf.heading = rtk->heading; |
| | | rbf.pitch = rtk->pitch; |
| | | rbf.roll = rtk->roll; |
| | | rbf.coord_x_dir = 'N'; |
| | | rbf.coord_y_dir = 'E'; |
| | | sprintf(rbf.utc, "%04d%02d%02d%02d%02d%02d.%02d", 2000 + rtk->YY, rtk->MM, rtk->DD, rtk->hh, rtk->mm, rtk->ss, rtk->dss); |
| | | if (!strcmp(rbf.utc, gbf.utc)) { |
| | | rbf.sat_num = gbf.sat_num; |
| | | rbf.latitude = gbf.latitude; |
| | | rbf.longitude = gbf.longitude; |
| | | rbf.altitude = gbf.altitude; |
| | | rbf.speed = gbf.speed; |
| | | rbf.trackTure = gbf.trackTure; |
| | | MA_SendRtkBrief(&rbf); |
| | | } |
| | | |
| | | MA_SendRtkBrief(&brief); |
| | | UpdateRTKInfo(rtk); |
| | | } |
| | | if (events & MCU_UPDATE_EVT) { |