feat: 添加电池和GPS支持,更新配置文件,新增相关脚本和服务
This commit is contained in:
88
gps/gnss/common/utils/default/include/NmeaFixInfo.h
Normal file
88
gps/gnss/common/utils/default/include/NmeaFixInfo.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Constants.h>
|
||||
#include <android/hardware/gnss/1.0/IGnss.h>
|
||||
#include <android/hardware/gnss/2.0/IGnss.h>
|
||||
#include <hidl/Status.h>
|
||||
#include <ctime>
|
||||
#include <string>
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace gnss {
|
||||
namespace common {
|
||||
|
||||
constexpr char GPGA_RECORD_TAG[] = "$GPGGA";
|
||||
constexpr char GPRMC_RECORD_TAG[] = "$GPRMC";
|
||||
constexpr char LINE_SEPARATOR = '\n';
|
||||
constexpr char COMMA_SEPARATOR = ',';
|
||||
constexpr double TIMESTAMP_EPSILON = 0.001;
|
||||
constexpr int MIN_COL_NUM = 13;
|
||||
|
||||
/** Helper class to parse and store the GNSS fix details information. */
|
||||
class NmeaFixInfo {
|
||||
private:
|
||||
float altitudeMeters;
|
||||
float bearingDegrees;
|
||||
uint32_t fixId;
|
||||
bool hasGMCRecord;
|
||||
bool hasGGARecord;
|
||||
float hDop;
|
||||
float vDop;
|
||||
float latDeg;
|
||||
float lngDeg;
|
||||
uint32_t satelliteCount;
|
||||
float speedMetersPerSec;
|
||||
int64_t timestamp;
|
||||
|
||||
public:
|
||||
static std::unique_ptr<V2_0::GnssLocation> getLocationFromInputStr(const std::string& inputStr);
|
||||
|
||||
private:
|
||||
static void splitStr(const std::string& line, const char& delimiter,
|
||||
std::vector<std::string>& out);
|
||||
static float checkAndConvertToFloat(const std::string& sentence);
|
||||
static int64_t nmeaPartsToTimestamp(const std::string& timeStr, const std::string& dateStr);
|
||||
|
||||
NmeaFixInfo();
|
||||
void parseGGALine(const std::vector<std::string>& sentenceValues);
|
||||
void parseRMCLine(const std::vector<std::string>& sentenceValues);
|
||||
std::unique_ptr<V2_0::GnssLocation> toGnssLocation() const;
|
||||
|
||||
// Getters
|
||||
float getAltitudeMeters() const;
|
||||
float getBearingAccuracyDegrees() const;
|
||||
float getBearingDegrees() const;
|
||||
uint32_t getFixId() const;
|
||||
float getHorizontalAccuracyMeters() const;
|
||||
float getLatDeg() const;
|
||||
float getLngDeg() const;
|
||||
float getSpeedAccuracyMetersPerSecond() const;
|
||||
float getSpeedMetersPerSec() const;
|
||||
int64_t getTimestamp() const;
|
||||
float getVerticalAccuracyMeters() const;
|
||||
|
||||
bool isValidFix() const;
|
||||
void reset();
|
||||
NmeaFixInfo& operator=(const NmeaFixInfo& rhs);
|
||||
};
|
||||
|
||||
} // namespace common
|
||||
} // namespace gnss
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
Reference in New Issue
Block a user