~aleteoryx/muditaos

ref: 2cd0e4721405c0bf263f311f27d38aadae6ac89f muditaos/module-cellular/at/src/UrcCpin.cpp -rw-r--r-- 1.7 KiB
2cd0e472 — Lefucjusz [BH-000] Update Harmony 2.10.0 changelog 2 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md

#include "UrcCpin.hpp"
#include <map>

using namespace at::urc;

at::SimState Cpin::parseState(std::string_view state)
{
    const std::map<std::string_view, SimState> cpin_convert_map = {
        {Cpin::cpin_ready, SimState::Ready},
        {Cpin::cpin_not_ready, SimState::NotReady},
        {Cpin::cpin_sim_pin, SimState::SimPin},
        {Cpin::cpin_sim_puk, SimState::SimPuk},
        {Cpin::cpin_sim_pin2, SimState::SimPin2},
        {Cpin::cpin_sim_puk2, SimState::SimPuk2},
        {Cpin::cpin_phnet_pin, SimState::PhNetPin},
        {Cpin::cpin_phnet_puk, SimState::PhNetPuk},
        {Cpin::cpin_phnestsub_pin, SimState::PhNetSPin},
        {Cpin::cpin_phnestsub_puk, SimState::PhNetSPuk},
        {Cpin::cpin_phsp_pin, SimState::PhSpPin},
        {Cpin::cpin_phsp_puk, SimState::PhSpPuk},
        {Cpin::cpin_phcorp_pin, SimState::PhCorpPin},
        {Cpin::cpin_phcorp_puk, SimState::PhCorpPuk},

    };

    auto it = cpin_convert_map.find(state);

    if (it != cpin_convert_map.end()) {
        return it->second;
    }
    return SimState::Unknown;
}

auto Cpin::isValid() const noexcept -> bool
{
    return tokens.size() == magic_enum::enum_count<Tokens>();
}

auto Cpin::getMessage() const noexcept -> std::optional<std::string>
{
    if (!isValid()) {
        return std::nullopt;
    }
    return tokens[Tokens::State];
}

auto Cpin::getState() const noexcept -> std::optional<at::SimState>
{
    if (!isValid()) {
        return std::nullopt;
    }
    auto msg = getMessage();
    LOG_DEBUG("CPIN State: %s", (*msg).c_str());
    return parseState(*msg);
}