Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Printf #166

Merged
merged 11 commits into from
Aug 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@
<b>Latest Updates:</b>

- TOFIX - FAP Loader disabled so the FW compiles. Compiling requires api_symbols.csv manipulation and some FAPs are not working, we are aware.
- Latest OFW updates: [#1524](https://github.com/flipperdevices/flipperzero-firmware/pull/1524), [#1492](https://github.com/flipperdevices/flipperzero-firmware/pull/1492), [#1496](https://github.com/flipperdevices/flipperzero-firmware/pull/1496), [#1520](https://github.com/flipperdevices/flipperzero-firmware/pull/1520), [#1523](https://github.com/flipperdevices/flipperzero-firmware/pull/1523), [#1513](https://github.com/flipperdevices/flipperzero-firmware/pull/1513), [#1462](https://github.com/flipperdevices/flipperzero-firmware/pull/1462) & [#1528](https://github.com/flipperdevices/flipperzero-firmware/pull/1528)
- Latest OFW updates: [#1524](https://github.com/flipperdevices/flipperzero-firmware/pull/1524), [#1492](https://github.com/flipperdevices/flipperzero-firmware/pull/1492), [#1496](https://github.com/flipperdevices/flipperzero-firmware/pull/1496), [#1520](https://github.com/flipperdevices/flipperzero-firmware/pull/1520), [#1523](https://github.com/flipperdevices/flipperzero-firmware/pull/1523), [#1513](https://github.com/flipperdevices/flipperzero-firmware/pull/1513), [#1462](https://github.com/flipperdevices/flipperzero-firmware/pull/1462), [#1528](https://github.com/flipperdevices/flipperzero-firmware/pull/1528) & [Make printf great again #1438 (By DrZlo13)](https://github.com/flipperdevices/flipperzero-firmware/pull/1438)
- Excluded [App RPC Bug Fixes and redesign #1491](https://github.com/flipperdevices/flipperzero-firmware/pull/1491) since it breaks compile
- Excluded [Make printf great again #1438 (By DrZlo13)](https://github.com/flipperdevices/flipperzero-firmware/pull/1438)

<table width="100%" border="0" cellspacing="0">
<tr> <td colspan=2> <h3>This software is for experimental purposes only and is not meant for any illegal activity/purposes. We do not condone illegal activity and strongly encourage keeping transmissions to legal/valid uses allowed by law.</h3> </td> </tr>
Expand Down Expand Up @@ -170,6 +169,5 @@ $ ./fbt plugin_dist FIRMWARE_APP_SET=ext_apps
## Conflicting PRs Not Merged:
- [Fixed building for users with space in windows username #1437 (By SzymonLisowiec)](https://github.com/flipperdevices/flipperzero-firmware/pull/1437)
- [App RPC Bug Fixes and redesign #1491 (By skotopes)](https://github.com/flipperdevices/flipperzero-firmware/pull/1491)
- [Make printf great again #1438 (By DrZlo13)](https://github.com/flipperdevices/flipperzero-firmware/pull/1438)

</td></tr></table>
4 changes: 2 additions & 2 deletions applications/arkanoid/arkanoid_game.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ void move_ball(Canvas* canvas) {
released = false;
lives--;

sprintf(text, "LIVES:%u", lives);
snprintf(text, sizeof(text), "LIVES:%u", lives);
canvas_draw_str(canvas, 0, 90, text);

// arduboy.tunes.tone(175, 250);
Expand Down Expand Up @@ -167,7 +167,7 @@ void move_ball(Canvas* canvas) {
leftBall <= rightBrick && rightBall >= leftBrick) {
// Draw score
score += (level * 10);
sprintf(text, "SCORE:%u", score);
snprintf(text, sizeof(text), "SCORE:%u", score);
canvas_draw_str(canvas, 80, 90, text);

brickCount++;
Expand Down
10 changes: 5 additions & 5 deletions applications/cli/cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -439,9 +439,9 @@ void cli_session_open(Cli* cli, void* session) {
cli->session = session;
if(cli->session != NULL) {
cli->session->init();
furi_stdglue_set_thread_stdout_callback(cli->session->tx_stdout);
furi_thread_set_stdout_callback(cli->session->tx_stdout);
} else {
furi_stdglue_set_thread_stdout_callback(NULL);
furi_thread_set_stdout_callback(NULL);
}
furi_semaphore_release(cli->idle_sem);
furi_check(furi_mutex_release(cli->mutex) == FuriStatusOk);
Expand All @@ -455,7 +455,7 @@ void cli_session_close(Cli* cli) {
cli->session->deinit();
}
cli->session = NULL;
furi_stdglue_set_thread_stdout_callback(NULL);
furi_thread_set_stdout_callback(NULL);
furi_check(furi_mutex_release(cli->mutex) == FuriStatusOk);
}

Expand All @@ -469,9 +469,9 @@ int32_t cli_srv(void* p) {
furi_record_create(RECORD_CLI, cli);

if(cli->session != NULL) {
furi_stdglue_set_thread_stdout_callback(cli->session->tx_stdout);
furi_thread_set_stdout_callback(cli->session->tx_stdout);
} else {
furi_stdglue_set_thread_stdout_callback(NULL);
furi_thread_set_stdout_callback(NULL);
}

if(furi_hal_rtc_get_boot_mode() == FuriHalRtcBootModeNormal) {
Expand Down
2 changes: 1 addition & 1 deletion applications/cli/cli_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ struct CliSession {
void (*deinit)(void);
size_t (*rx)(uint8_t* buffer, size_t size, uint32_t timeout);
void (*tx)(const uint8_t* buffer, size_t size);
void (*tx_stdout)(void* _cookie, const char* data, size_t size);
void (*tx_stdout)(const char* data, size_t size);
bool (*is_connected)(void);
};

Expand Down
3 changes: 1 addition & 2 deletions applications/cli/cli_vcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,7 @@ static void cli_vcp_tx(const uint8_t* buffer, size_t size) {
#endif
}

static void cli_vcp_tx_stdout(void* _cookie, const char* data, size_t size) {
UNUSED(_cookie);
static void cli_vcp_tx_stdout(const char* data, size_t size) {
cli_vcp_tx((const uint8_t*)data, size);
}

Expand Down
8 changes: 5 additions & 3 deletions applications/clock_app/clock_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,21 @@ static void clock_render_callback(Canvas* const canvas, void* ctx) {
char strings[3][20];
int curMin = (timerSecs / 60);
int curSec = timerSecs - (curMin * 60);
sprintf(
snprintf(
strings[0],
sizeof(strings[0]),
"%.4d-%.2d-%.2d",
state->datetime.year,
state->datetime.month,
state->datetime.day);
sprintf(
snprintf(
strings[1],
sizeof(strings[1]),
"%.2d:%.2d:%.2d",
state->datetime.hour,
state->datetime.minute,
state->datetime.second);
sprintf(strings[2], "%.2d:%.2d", curMin, curSec);
snprintf(strings[2], sizeof(strings[2]), "%.2d:%.2d", curMin, curSec);
release_mutex((ValueMutex*)ctx, state);
canvas_set_font(canvas, FontBigNumbers);
canvas_draw_str_aligned(canvas, 64, 8, AlignCenter, AlignCenter, strings[1]);
Expand Down
9 changes: 5 additions & 4 deletions applications/desktop/views/desktop_view_debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ void desktop_debug_render(Canvas* canvas, void* model) {
canvas_draw_str(canvas, 5, 50 + STATUS_BAR_Y_SHIFT, buffer);

} else {
char buffer[64];
Dolphin* dolphin = furi_record_open(RECORD_DOLPHIN);
DolphinStats stats = dolphin_stats(dolphin);
furi_record_close(RECORD_DOLPHIN);
Expand All @@ -86,18 +85,20 @@ void desktop_debug_render(Canvas* canvas, void* model) {
uint32_t remaining = dolphin_state_xp_to_levelup(m->icounter);

canvas_set_font(canvas, FontSecondary);
snprintf(buffer, 64, "Icounter: %ld Butthurt %ld", m->icounter, m->butthurt);
snprintf(buffer, sizeof(buffer), "Icounter: %ld Butthurt %ld", m->icounter, m->butthurt);
canvas_draw_str(canvas, 5, 19 + STATUS_BAR_Y_SHIFT, buffer);

snprintf(
buffer,
64,
sizeof(buffer),
"Level: %ld To level up: %ld",
current_lvl,
(remaining == (uint32_t)(-1) ? remaining : 0));
canvas_draw_str(canvas, 5, 29 + STATUS_BAR_Y_SHIFT, buffer);

snprintf(buffer, 64, "%s", asctime(localtime((const time_t*)&m->timestamp)));
// even if timestamp is uint64_t, it's safe to cast it to uint32_t, because furi_hal_rtc_datetime_to_timestamp only returns uint32_t
snprintf(buffer, sizeof(buffer), "%ld", (uint32_t)m->timestamp);

canvas_draw_str(canvas, 5, 39 + STATUS_BAR_Y_SHIFT, buffer);
canvas_draw_str(canvas, 0, 49 + STATUS_BAR_Y_SHIFT, "[< >] icounter value [ok] save");
}
Expand Down
67 changes: 34 additions & 33 deletions applications/dice/dice.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,9 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
srand(furi_get_tick());
rand_generator_inited = true;
}
sprintf(
snprintf(
rollTime[0],
sizeof(rollTime[0]),
"%.2d:%.2d:%.2d",
state->datetime.hour,
state->datetime.minute,
Expand Down Expand Up @@ -93,10 +94,10 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
"Very doubtful",
"My reply is no"};
diceRoll = ((rand() % diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
sprintf(diceType[0], "%s", "8BALL");
sprintf(strings[0], "%s at %s", diceType[0], rollTime[0]);
snprintf(diceType[0], sizeof(diceType[0]), "%s", "8BALL");
snprintf(strings[0], sizeof(strings[0]), "%s at %s", diceType[0], rollTime[0]);
uint8_t d1_i = rand() % COUNT_OF(eightBall);
sprintf(strings[1], "%s", eightBall[d1_i]);
snprintf(strings[1], sizeof(strings[1]), "%s", eightBall[d1_i]);
} else if(diceSelect == 230) {
const char* diceOne[] = {
"Nibble",
Expand All @@ -122,11 +123,11 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
"???",
"Genitals"};
diceRoll = ((rand() % diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
sprintf(diceType[0], "%s", "SEX?");
sprintf(strings[0], "%s at %s", diceType[0], rollTime[0]);
snprintf(diceType[0], sizeof(diceType[0]), "%s", "SEX?");
snprintf(strings[0], sizeof(strings[0]), "%s at %s", diceType[0], rollTime[0]);
uint8_t d1_i = rand() % COUNT_OF(diceOne);
uint8_t d2_i = rand() % COUNT_OF(diceTwo);
sprintf(strings[1], "%s %s", diceOne[d1_i], diceTwo[d2_i]);
snprintf(strings[1], sizeof(strings[1]), "%s %s", diceOne[d1_i], diceTwo[d2_i]);
} else if(diceSelect == 231) {
const char* deckOne[] = {"2H", "2C", "2D", "2S", "3H", "3C", "3D", "3S", "4H",
"4C", "4D", "4S", "5H", "5C", "5D", "5S", "6H", "6C",
Expand All @@ -141,24 +142,24 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
"JH", "JC", "JD", "JS", "QH", "QC", "QD", "QS", "KH",
"KC", "KD", "KS", "AH", "AC", "AD"}; // ONE LESS SINCE ONE WILL BE REMOVED
diceRoll = ((rand() % diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
sprintf(diceType[0], "%s", "WAR!");
sprintf(strings[0], "%s at %s", diceType[0], rollTime[0]);
snprintf(diceType[0], sizeof(diceType[0]), "%s", "WAR!");
snprintf(strings[0], sizeof(strings[0]), "%s at %s", diceType[0], rollTime[0]);
uint8_t d1_i = rand() % COUNT_OF(deckOne);
// INITIALIZE WITH PLACEHOLDERS TO AVOID MAYBE UNINITIALIZED ERROR
for(int i = 0; i < COUNT_OF(deckOne); i++) {
if(i < d1_i) {
sprintf(deckTwo[i], "%s", deckOne[i]);
snprintf(deckTwo[i], 8, "%s", deckOne[i]);
} else if(i > d1_i) {
sprintf(deckTwo[i - 1], "%s", deckOne[i]);
snprintf(deckTwo[i - 1], 8, "%s", deckOne[i]);
}
}
uint8_t d2_i = rand() % COUNT_OF(deckTwo);
if(d1_i > d2_i) {
playerOneScore++;
sprintf(strings[1], "%s > %s", deckOne[d1_i], deckTwo[d2_i]);
snprintf(strings[1], sizeof(strings[1]), "%s > %s", deckOne[d1_i], deckTwo[d2_i]);
} else {
playerTwoScore++;
sprintf(strings[1], "%s < %s", deckOne[d1_i], deckTwo[d2_i]);
snprintf(strings[1], sizeof(strings[1]), "%s < %s", deckOne[d1_i], deckTwo[d2_i]);
}
} else if(diceSelect == 232) {
const char* diceOne[] = {
Expand All @@ -185,51 +186,51 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
"then sing a song",
"then do a dance"};
diceRoll = ((rand() % diceSelect) + 1); // JUST TO GET IT GOING? AND FIX BUG
sprintf(diceType[0], "%s", "WEED!");
sprintf(strings[0], "%s at %s", diceType[0], rollTime[0]);
snprintf(diceType[0], sizeof(diceType[0]), "%s", "WEED!");
snprintf(strings[0], sizeof(strings[0]), "%s at %s", diceType[0], rollTime[0]);
uint8_t d1_i = rand() % COUNT_OF(diceOne);
uint8_t d2_i = rand() % COUNT_OF(diceTwo);
uint8_t d3_i = rand() % COUNT_OF(diceThree);
uint8_t d4_i = rand() % COUNT_OF(diceFour);
sprintf(strings[1], "%s", diceOne[d1_i]);
sprintf(strings[2], "%s", diceTwo[d2_i]);
sprintf(strings[3], "%s", diceThree[d3_i]);
sprintf(strings[4], "%s", diceFour[d4_i]);
snprintf(strings[1], sizeof(strings[1]), "%s", diceOne[d1_i]);
snprintf(strings[2], sizeof(strings[2]), "%s", diceTwo[d2_i]);
snprintf(strings[3], sizeof(strings[3]), "%s", diceThree[d3_i]);
snprintf(strings[4], sizeof(strings[4]), "%s", diceFour[d4_i]);
} else {
diceRoll = ((rand() % diceSelect) + 1);
sprintf(diceType[0], "%s%d", "d", diceSelect);
sprintf(strings[0], "%d%s at %s", diceQty, diceType[0], rollTime[0]);
snprintf(diceType[0], sizeof(diceType[0]), "%s%d", "d", diceSelect);
snprintf(strings[0], sizeof(strings[0]), "%d%s at %s", diceQty, diceType[0], rollTime[0]);
if(diceQty == 1) {
sprintf(strings[1], "%d", diceRoll);
snprintf(strings[1], sizeof(strings[1]), "%d", diceRoll);
} else if(diceQty == 2) {
sprintf(strings[1], "%d %d", diceRoll, ((rand() % diceSelect) + 1));
snprintf(strings[1], sizeof(strings[1]), "%d %d", diceRoll, ((rand() % diceSelect) + 1));
} else if(diceQty == 3) {
sprintf(
strings[1],
snprintf(
strings[1], sizeof(strings[1]),
"%d %d %d",
diceRoll,
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1));
} else if(diceQty == 4) {
sprintf(
strings[1],
snprintf(
strings[1], sizeof(strings[1]),
"%d %d %d %d",
diceRoll,
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1));
} else if(diceQty == 5) {
sprintf(
strings[1],
snprintf(
strings[1], sizeof(strings[1]),
"%d %d %d %d %d",
diceRoll,
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1),
((rand() % diceSelect) + 1));
} else if(diceQty == 6) {
sprintf(
strings[1],
snprintf(
strings[1], sizeof(strings[1]),
"%d %d %d %d %d %d",
diceRoll,
((rand() % diceSelect) + 1),
Expand Down Expand Up @@ -258,8 +259,8 @@ static void dice_render_callback(Canvas* const canvas, void* ctx) {
}
if(diceSelect == 231 && !(playerOneScore == 0 && playerTwoScore == 0)) {
canvas_set_font(canvas, FontSecondary);
sprintf(
theScores[0],
snprintf(
theScores[0], sizeof(theScores[0]),
"%d %d",
playerOneScore,
playerTwoScore);
Expand Down
8 changes: 4 additions & 4 deletions applications/infrared/infrared_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ static void signal_received_callback(void* context, InfraredWorkerSignal* receiv

if(infrared_worker_signal_is_decoded(received_signal)) {
const InfraredMessage* message = infrared_worker_get_decoded_signal(received_signal);
buf_cnt = sniprintf(
buf_cnt = snprintf(
buf,
sizeof(buf),
"%s, A:0x%0*lX, C:0x%0*lX%s\r\n",
Expand All @@ -43,13 +43,13 @@ static void signal_received_callback(void* context, InfraredWorkerSignal* receiv
size_t timings_cnt;
infrared_worker_get_raw_signal(received_signal, &timings, &timings_cnt);

buf_cnt = sniprintf(buf, sizeof(buf), "RAW, %d samples:\r\n", timings_cnt);
buf_cnt = snprintf(buf, sizeof(buf), "RAW, %d samples:\r\n", timings_cnt);
cli_write(cli, (uint8_t*)buf, buf_cnt);
for(size_t i = 0; i < timings_cnt; ++i) {
buf_cnt = sniprintf(buf, sizeof(buf), "%lu ", timings[i]);
buf_cnt = snprintf(buf, sizeof(buf), "%lu ", timings[i]);
cli_write(cli, (uint8_t*)buf, buf_cnt);
}
buf_cnt = sniprintf(buf, sizeof(buf), "\r\n");
buf_cnt = snprintf(buf, sizeof(buf), "\r\n");
cli_write(cli, (uint8_t*)buf, buf_cnt);
}
}
Expand Down
4 changes: 2 additions & 2 deletions applications/mousejacker/mousejacker.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static void render_callback(Canvas* const canvas, void* ctx) {
canvas_draw_frame(canvas, 0, 0, 128, 64);

canvas_set_font(canvas, FontSecondary);
sprintf(target_text, target_fmt_text, target_address_str);
snprintf(target_text, sizeof(target_text), target_fmt_text, target_address_str);
canvas_draw_str_aligned(canvas, 10, 10, AlignLeft, AlignBottom, target_text);
canvas_draw_str_aligned(canvas, 10, 30, AlignLeft, AlignBottom, "Press Ok button to ");
canvas_draw_str_aligned(canvas, 10, 40, AlignLeft, AlignBottom, "browse for ducky script");
Expand All @@ -74,7 +74,7 @@ static void mousejacker_state_init(PluginState* const plugin_state) {

static void hexlify(uint8_t* in, uint8_t size, char* out) {
memset(out, 0, size * 2);
for(int i = 0; i < size; i++) sprintf(out + strlen(out), "%02X", in[i]);
for(int i = 0; i < size; i++) snprintf(out + strlen(out), sizeof(out + strlen(out)), "%02X", in[i]);
}

static bool open_ducky_script(Storage* storage, Stream* stream) {
Expand Down
14 changes: 7 additions & 7 deletions applications/nrfsniff/nrfsniff.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@ static void render_callback(Canvas* const canvas, void* ctx) {

if(!sniffing_state) strcpy(sniffing, "No");

sprintf(rate_text, rate_text_fmt, (int)rate);
sprintf(channel_text, channel_text_fmt, (int)target_channel);
sprintf(preamble_text, preamble_text_fmt, target_preamble[0]);
sprintf(sniff_text, sniff_text_fmt, sniffing);
sprintf(sniffed_address, sniffed_address_fmt, top_address, (int)rate);
snprintf(rate_text, sizeof(rate_text), rate_text_fmt, (int)rate);
snprintf(channel_text, sizeof(channel_text), channel_text_fmt, (int)target_channel);
snprintf(preamble_text, sizeof(preamble_text), preamble_text_fmt, target_preamble[0]);
snprintf(sniff_text, sizeof(sniff_text), sniff_text_fmt, sniffing);
snprintf(sniffed_address, sizeof(sniffed_address), sniffed_address_fmt, top_address, (int)rate);
canvas_draw_str_aligned(canvas, 10, 10, AlignLeft, AlignBottom, rate_text);
canvas_draw_str_aligned(canvas, 10, 20, AlignLeft, AlignBottom, channel_text);
canvas_draw_str_aligned(canvas, 10, 30, AlignLeft, AlignBottom, preamble_text);
Expand All @@ -148,7 +148,7 @@ static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queu

static void hexlify(uint8_t* in, uint8_t size, char* out) {
memset(out, 0, size * 2);
for(int i = 0; i < size; i++) sprintf(out + strlen(out), "%02X", in[i]);
for(int i = 0; i < size; i++) snprintf(out + strlen(out), sizeof(out + strlen(out)),"%02X", in[i]);
}

static bool save_addr_to_file(Storage* storage, uint8_t* data, uint8_t size) {
Expand All @@ -162,7 +162,7 @@ static bool save_addr_to_file(Storage* storage, uint8_t* data, uint8_t size) {
Stream* stream = file_stream_alloc(storage);

if(target_rate == 8) rate = 2;
sprintf(ending, ",%d\n", rate);
snprintf(ending, sizeof(ending), ",%d\n", rate);
hexlify(data, size, addrline);
strcat(addrline, ending);
linesize = strlen(addrline);
Expand Down
Loading