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
26
27namespace cuttlefish {
28
29using namespace casimir::rf;
30
32 public:
34 static Result<CasimirController> ConnectToUnixSocket(const std::string& rf);
35
38
40
41 Result<std::tuple<std::vector<uint8_t>, std::string, bool, uint32_t, uint32_t,
42 uint32_t, double>>
43 SendBroadcast(std::vector<uint8_t> data, std::string type, bool crc,
44 uint8_t bits, uint32_t bitrate, uint32_t timeout, double power);
45
46 /*
47 * Poll for NFC-A + ISO-DEP
48 */
50
51 Result<std::vector<uint8_t>> SendApdu(uint16_t receiver_id,
52 std::vector<uint8_t> apdu);
53
54 private:
56 /*
57 * Select NFC-A, and returns sender id.
58 */
60
61 /*
62 * Select T4AT by choosing NFC-A listener using ISO-DEP protocol (Type-4A Tag
63 * platform).
64 */
65 Result<void> SelectT4AT(uint16_t sender_id);
66
67 Result<void> Write(const RfPacketBuilder& rf_packet);
69 size_t size, std::chrono::microseconds timeout);
71 std::chrono::microseconds timeout);
72
74 uint8_t power_level;
75};
76
77} // namespace cuttlefish
Definition: expected.h:86
Definition: rf_packets.h:264
Definition: casimir_controller.h:31
CasimirController(SharedFD sock)
Definition: casimir_controller.cpp:44
Result< uint16_t > SelectNfcA()
Definition: casimir_controller.cpp:91
Result< void > Unmute()
Definition: casimir_controller.cpp:75
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:167
Result< void > Write(const RfPacketBuilder &rf_packet)
Definition: casimir_controller.cpp:242
Result< std::shared_ptr< std::vector< uint8_t > > > ReadExact(size_t size, std::chrono::microseconds timeout)
Definition: casimir_controller.cpp:260
Result< void > Mute()
Definition: casimir_controller.cpp:33
Result< void > SelectT4AT(uint16_t sender_id)
Definition: casimir_controller.cpp:113
Result< std::vector< uint8_t > > SendApdu(uint16_t receiver_id, std::vector< uint8_t > apdu)
Definition: casimir_controller.cpp:141
static Result< CasimirController > ConnectToUnixSocket(const std::string &rf)
Definition: casimir_controller.cpp:62
Result< std::shared_ptr< std::vector< uint8_t > > > ReadRfPacket(std::chrono::microseconds timeout)
Definition: casimir_controller.cpp:302
uint8_t power_level
Definition: casimir_controller.h:74
Result< uint16_t > Poll()
Definition: casimir_controller.cpp:133
SharedFD sock_
Definition: casimir_controller.h:73
Result< void > SetPowerLevel(uint32_t power_level)
Definition: casimir_controller.cpp:86
static Result< CasimirController > ConnectToTcpPort(int rf_port)
Definition: casimir_controller.cpp:48
Definition: shared_fd.h:129
char data[Size]
Definition: incremental_server.cpp:1
uint32_t size
Definition: io.h:2
Definition: rf_packets.h:44
Definition: alloc_utils.cpp:23
uint8_t type
Definition: pairing_connection.h:0