Android-cuttlefish cvd tool
casimir_controller.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <vector>
20
24
25namespace cuttlefish {
26
27using namespace casimir::rf;
28
30 public:
32 static Result<CasimirController> ConnectToUnixSocket(const std::string& rf);
33
36
38
39 Result<std::tuple<std::vector<uint8_t>, std::string, bool, uint32_t, uint32_t,
40 uint32_t, double>>
41 SendBroadcast(std::vector<uint8_t> data, std::string type, bool crc,
42 uint8_t bits, uint32_t bitrate, uint32_t timeout, double power);
43
44 /*
45 * Poll for NFC-A + ISO-DEP
46 */
48
49 Result<std::vector<uint8_t>> SendApdu(uint16_t receiver_id,
50 std::vector<uint8_t> apdu);
51
52 private:
54 /*
55 * Select NFC-A, and returns sender id.
56 */
58
59 /*
60 * Select T4AT by choosing NFC-A listener using ISO-DEP protocol (Type-4A Tag
61 * platform).
62 */
63 Result<void> SelectT4AT(uint16_t sender_id);
64
65 Result<void> Write(const RfPacketBuilder& rf_packet);
67 size_t size, std::chrono::microseconds timeout);
69 std::chrono::microseconds timeout);
70
72 uint8_t power_level;
73};
74
75} // namespace cuttlefish
Definition: rf_packets.h:284
Definition: casimir_controller.h:29
CasimirController(SharedFD sock)
Definition: casimir_controller.cpp:58
Result< uint16_t > SelectNfcA()
Definition: casimir_controller.cpp:105
Result< void > Unmute()
Definition: casimir_controller.cpp:89
Result< std::tuple< std::vector< uint8_t >, std::string, bool, uint32_t, uint32_t, uint32_t, double > > SendBroadcast(std::vector< uint8_t > data, std::string type, bool crc, uint8_t bits, uint32_t bitrate, uint32_t timeout, double power)
Definition: casimir_controller.cpp:184
Result< void > Write(const RfPacketBuilder &rf_packet)
Definition: casimir_controller.cpp:261
Result< std::shared_ptr< std::vector< uint8_t > > > ReadExact(size_t size, std::chrono::microseconds timeout)
Definition: casimir_controller.cpp:279
Result< void > Mute()
Definition: casimir_controller.cpp:47
Result< void > SelectT4AT(uint16_t sender_id)
Definition: casimir_controller.cpp:128
Result< std::vector< uint8_t > > SendApdu(uint16_t receiver_id, std::vector< uint8_t > apdu)
Definition: casimir_controller.cpp:157
static Result< CasimirController > ConnectToUnixSocket(const std::string &rf)
Definition: casimir_controller.cpp:76
Result< std::shared_ptr< std::vector< uint8_t > > > ReadRfPacket(std::chrono::microseconds timeout)
Definition: casimir_controller.cpp:322
uint8_t power_level
Definition: casimir_controller.h:72
Result< uint16_t > Poll()
Definition: casimir_controller.cpp:149
SharedFD sock_
Definition: casimir_controller.h:71
Result< void > SetPowerLevel(uint32_t power_level)
Definition: casimir_controller.cpp:100
static Result< CasimirController > ConnectToTcpPort(int rf_port)
Definition: casimir_controller.cpp:62
Definition: shared_fd.h:124
#define data
Definition: dict.c:56
__le32 crc
Definition: f2fs_fs.h:46
uint32_t size
Definition: io.h:2
Definition: rf_packets.h:45
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30
uint8_t type
Definition: pairing_connection.h:0