mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-12-12 09:14:30 -05:00
parent
2913a41aec
commit
312df0fcec
@ -206,6 +206,7 @@ void BleRecentEntryDetailView::launch_bletx(BleRecentEntry packetEntry) {
|
|||||||
|
|
||||||
strncpy(bleTxPacket.macAddress, macAddressStr.c_str(), 13);
|
strncpy(bleTxPacket.macAddress, macAddressStr.c_str(), 13);
|
||||||
strncpy(bleTxPacket.advertisementData, packetEntry.dataString.c_str(), (packetEntry.packetData.dataLen * 2) + 1);
|
strncpy(bleTxPacket.advertisementData, packetEntry.dataString.c_str(), (packetEntry.packetData.dataLen * 2) + 1);
|
||||||
|
strncpy(bleTxPacket.packetCount, "50", 3);
|
||||||
bleTxPacket.packet_count = 50;
|
bleTxPacket.packet_count = 50;
|
||||||
|
|
||||||
nav_.replace<BLETxView>(bleTxPacket);
|
nav_.replace<BLETxView>(bleTxPacket);
|
||||||
|
@ -172,6 +172,30 @@ void BLETxView::file_error() {
|
|||||||
nav_.display_modal("Error", "File read error.");
|
nav_.display_modal("Error", "File read error.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BLETxView::saveFile(const std::filesystem::path& path) {
|
||||||
|
File f;
|
||||||
|
auto error = f.create(path);
|
||||||
|
if (error)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < num_packets; i++) {
|
||||||
|
std::string macAddressStr = packets[i].macAddress;
|
||||||
|
std::string advertisementDataStr = packets[i].advertisementData;
|
||||||
|
std::string packetCountStr = packets[i].packetCount;
|
||||||
|
|
||||||
|
std::string packetString = macAddressStr + ' ' + advertisementDataStr + ' ' + packetCountStr;
|
||||||
|
|
||||||
|
// Are we on the last line?
|
||||||
|
if (i != num_packets - 1) {
|
||||||
|
packetString += '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
f.write(packetString.c_str(), packetString.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void BLETxView::toggle() {
|
void BLETxView::toggle() {
|
||||||
if (is_active()) {
|
if (is_active()) {
|
||||||
stop();
|
stop();
|
||||||
@ -286,11 +310,14 @@ BLETxView::BLETxView(NavigationView& nav)
|
|||||||
&label_mac_address,
|
&label_mac_address,
|
||||||
&text_mac_address,
|
&text_mac_address,
|
||||||
&label_data_packet,
|
&label_data_packet,
|
||||||
|
&button_save_packet,
|
||||||
&button_switch,
|
&button_switch,
|
||||||
&console});
|
&console});
|
||||||
|
|
||||||
field_frequency.set_step(0);
|
field_frequency.set_step(0);
|
||||||
|
|
||||||
|
ensure_directory(packet_save_path);
|
||||||
|
|
||||||
button_play.on_select = [this](ImageButton&) {
|
button_play.on_select = [this](ImageButton&) {
|
||||||
this->toggle();
|
this->toggle();
|
||||||
};
|
};
|
||||||
@ -326,6 +353,17 @@ BLETxView::BLETxView(NavigationView& nav)
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
button_save_packet.on_select = [this, &nav](Button&) {
|
||||||
|
packetFileBuffer = "";
|
||||||
|
text_prompt(
|
||||||
|
nav,
|
||||||
|
packetFileBuffer,
|
||||||
|
64,
|
||||||
|
[this](std::string& buffer) {
|
||||||
|
on_save_file(buffer);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
button_switch.on_select = [this, &nav](Button&) {
|
button_switch.on_select = [this, &nav](Button&) {
|
||||||
nav_.set_on_pop([this]() { nav_.push<BLERxView>(); });
|
nav_.set_on_pop([this]() { nav_.push<BLERxView>(); });
|
||||||
nav_.pop();
|
nav_.pop();
|
||||||
@ -391,6 +429,14 @@ void BLETxView::on_file_changed(const fs::path& new_file_path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BLETxView::on_save_file(const std::string value) {
|
||||||
|
auto folder = packet_save_path.parent_path();
|
||||||
|
auto ext = packet_save_path.extension();
|
||||||
|
auto new_path = folder / value + ext;
|
||||||
|
|
||||||
|
saveFile(new_path);
|
||||||
|
}
|
||||||
|
|
||||||
void BLETxView::on_data(uint32_t value, bool is_data) {
|
void BLETxView::on_data(uint32_t value, bool is_data) {
|
||||||
std::string str_console = "";
|
std::string str_console = "";
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ class BLETxView : public View {
|
|||||||
void stop();
|
void stop();
|
||||||
void handle_replay_thread_done(const uint32_t return_code);
|
void handle_replay_thread_done(const uint32_t return_code);
|
||||||
void file_error();
|
void file_error();
|
||||||
|
bool saveFile(const std::filesystem::path& path);
|
||||||
|
|
||||||
std::string title() const override { return "BLE TX"; };
|
std::string title() const override { return "BLE TX"; };
|
||||||
|
|
||||||
@ -87,6 +88,7 @@ class BLETxView : public View {
|
|||||||
void on_tx_progress(const bool done);
|
void on_tx_progress(const bool done);
|
||||||
void on_file_changed(const std::filesystem::path& new_file_path);
|
void on_file_changed(const std::filesystem::path& new_file_path);
|
||||||
void update_packet_display(BLETxPacket packet);
|
void update_packet_display(BLETxPacket packet);
|
||||||
|
void on_save_file(const std::string value);
|
||||||
|
|
||||||
NavigationView& nav_;
|
NavigationView& nav_;
|
||||||
TxRadioState radio_state_{
|
TxRadioState radio_state_{
|
||||||
@ -101,6 +103,7 @@ class BLETxView : public View {
|
|||||||
uint32_t prev_value{0};
|
uint32_t prev_value{0};
|
||||||
|
|
||||||
std::filesystem::path file_path{};
|
std::filesystem::path file_path{};
|
||||||
|
std::filesystem::path packet_save_path{u"BLETX/BLETX_????.TXT"};
|
||||||
uint8_t channel_number = 37;
|
uint8_t channel_number = 37;
|
||||||
|
|
||||||
char randomMac[13] = "010203040506";
|
char randomMac[13] = "010203040506";
|
||||||
@ -252,13 +255,18 @@ class BLETxView : public View {
|
|||||||
Console console{
|
Console console{
|
||||||
{0, 8 * 16, 240, 240}};
|
{0, 8 * 16, 240, 240}};
|
||||||
|
|
||||||
|
Button button_save_packet{
|
||||||
|
{1 * 8, 16 * 16, 13 * 8, 2 * 16},
|
||||||
|
"Save Packet"};
|
||||||
|
|
||||||
Button button_switch{
|
Button button_switch{
|
||||||
{8 * 8, 16 * 16, 14 * 8, 2 * 16},
|
{16 * 8, 16 * 16, 13 * 8, 2 * 16},
|
||||||
"Switch to Rx"};
|
"Switch to Rx"};
|
||||||
|
|
||||||
std::string str_log{""};
|
std::string str_log{""};
|
||||||
bool logging{true};
|
bool logging{true};
|
||||||
bool logging_done{false};
|
bool logging_done{false};
|
||||||
|
std::string packetFileBuffer{};
|
||||||
|
|
||||||
std::unique_ptr<BLELoggerTx> logger{};
|
std::unique_ptr<BLELoggerTx> logger{};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user