M*LIB: non-inlined strings, FuriString primitive (#1795)

* Quicksave 1
* Header stage complete
* Source stage complete
* Lint & merge fixes
* Includes
* Documentation step 1
* FBT: output free size considering BT STACK
* Documentation step 2
* py lint
* Fix music player plugin
* unit test stage 1: string allocator, mem, getters, setters, appends, compare, search.
* unit test: string equality
* unit test: string replace
* unit test: string start_with, end_with
* unit test: string trim
* unit test: utf-8
* Rename
* Revert fw_size changes
* Simplify CLI backspace handling
* Simplify CLI character insert
* Merge fixes
* Furi: correct filenaming and spelling
* Bt: remove furi string include

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Sergey Gavrilov
2022-10-06 01:15:23 +10:00
committed by GitHub
parent 0f9ea925d3
commit 4bf29827f8
370 changed files with 5597 additions and 3963 deletions

View File

@@ -3,7 +3,6 @@
#include <ble/ble.h>
#include <furi.h>
#include <m-string.h>
#include <protobuf_version.h>
#include <lib/toolbox/version.h>
@@ -16,7 +15,7 @@ typedef struct {
uint16_t firmware_rev_char_handle;
uint16_t software_rev_char_handle;
uint16_t rpc_version_char_handle;
string_t version_string;
FuriString* version_string;
char hardware_revision[4];
} DevInfoSvc;
@@ -31,8 +30,7 @@ static const uint8_t dev_info_rpc_version_uuid[] =
void dev_info_svc_start() {
dev_info_svc = malloc(sizeof(DevInfoSvc));
string_init_printf(
dev_info_svc->version_string,
dev_info_svc->version_string = furi_string_alloc_printf(
"%s %s %s %s",
version_get_githash(NULL),
version_get_gitbranch(NULL),
@@ -104,7 +102,7 @@ void dev_info_svc_start() {
dev_info_svc->service_handle,
UUID_TYPE_16,
(Char_UUID_t*)&uuid,
string_size(dev_info_svc->version_string),
furi_string_size(dev_info_svc->version_string),
CHAR_PROP_READ,
ATTR_PERMISSION_AUTHEN_READ,
GATT_DONT_NOTIFY_EVENTS,
@@ -161,8 +159,8 @@ void dev_info_svc_start() {
dev_info_svc->service_handle,
dev_info_svc->software_rev_char_handle,
0,
string_size(dev_info_svc->version_string),
(uint8_t*)string_get_cstr(dev_info_svc->version_string));
furi_string_size(dev_info_svc->version_string),
(uint8_t*)furi_string_get_cstr(dev_info_svc->version_string));
if(status) {
FURI_LOG_E(TAG, "Failed to update software revision char: %d", status);
}
@@ -180,7 +178,7 @@ void dev_info_svc_start() {
void dev_info_svc_stop() {
tBleStatus status;
if(dev_info_svc) {
string_clear(dev_info_svc->version_string);
furi_string_free(dev_info_svc->version_string);
// Delete service characteristics
status =
aci_gatt_del_char(dev_info_svc->service_handle, dev_info_svc->man_name_char_handle);