Added basic support for PartialModel load
This commit is contained in:
@@ -602,6 +602,11 @@ PACK(struct CustomScreenData {
|
||||
#define SCRIPT_DATA
|
||||
#endif
|
||||
|
||||
PACK(struct PartialModel {
|
||||
ModelHeader header;
|
||||
TimerData timers[MAX_TIMERS];
|
||||
});
|
||||
|
||||
PACK(struct ModelData {
|
||||
ModelHeader header;
|
||||
TimerData timers[MAX_TIMERS];
|
||||
|
||||
@@ -138,18 +138,23 @@ const char * readModel(const char * filename, uint8_t * buffer, uint32_t size, u
|
||||
// YAML reader
|
||||
TRACE("YAML model reader");
|
||||
|
||||
if (size < sizeof(g_model)) {
|
||||
// TODO: Partial load for ModelButton::load()
|
||||
// -> maybe we should have a summary in modelslist.yml?
|
||||
memset(buffer, 0, size);
|
||||
return nullptr;
|
||||
const YamlNode* data_nodes = nullptr;
|
||||
if (size == sizeof(g_model)) {
|
||||
data_nodes = get_modeldata_nodes();
|
||||
}
|
||||
else if (size == sizeof(PartialModel)) {
|
||||
data_nodes = get_partialmodel_nodes();
|
||||
}
|
||||
else {
|
||||
TRACE("cannot find YAML data nodes for object size (size=%d)", size);
|
||||
return "YAML size error";
|
||||
}
|
||||
|
||||
char path[256];
|
||||
getModelPath(path, filename);
|
||||
|
||||
YamlTreeWalker tree;
|
||||
tree.reset(get_modeldata_nodes(), buffer);
|
||||
tree.reset(data_nodes, buffer);
|
||||
|
||||
// wipe memory before reading YAML
|
||||
memset(buffer,0,size);
|
||||
|
||||
@@ -17,7 +17,7 @@ endif()
|
||||
set(YAML_GEN ${RADIO_DIRECTORY}/util/generate_yaml.py)
|
||||
set(YAML_GEN_TEMPLATE ${RADIO_DIRECTORY}/util/yaml_parser.tmpl)
|
||||
|
||||
SET(YAML_NODES "\"RadioData,ModelData\"")
|
||||
SET(YAML_NODES "\"RadioData,ModelData,PartialModel\"")
|
||||
set(YAML_GEN_ARGS myeeprom.h ${YAML_GEN_TEMPLATE} ${YAML_NODES} -DYAML_GENERATOR)
|
||||
|
||||
get_property(flags DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY COMPILE_DEFINITIONS)
|
||||
|
||||
@@ -26,5 +26,6 @@ struct YamlNode;
|
||||
|
||||
const YamlNode* get_radiodata_nodes();
|
||||
const YamlNode* get_modeldata_nodes();
|
||||
const YamlNode* get_partialmodel_nodes();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -769,8 +769,13 @@ static const struct YamlNode struct_ModelData[] = {
|
||||
YAML_STRING("modelRegistrationID", 8),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_PartialModel[] = {
|
||||
YAML_STRUCT("header", 248, struct_ModelHeader, NULL),
|
||||
YAML_ARRAY("timers", 128, 3, struct_TimerData, NULL),
|
||||
YAML_END
|
||||
};
|
||||
|
||||
#define MAX_RADIODATA_MODELDATA_STR_LEN 24
|
||||
#define MAX_RADIODATA_MODELDATA_PARTIALMODEL_STR_LEN 24
|
||||
|
||||
static const struct YamlNode __RadioData_root_node = YAML_ROOT( struct_RadioData );
|
||||
|
||||
@@ -784,4 +789,10 @@ const YamlNode* get_modeldata_nodes()
|
||||
{
|
||||
return &__ModelData_root_node;
|
||||
}
|
||||
static const struct YamlNode __PartialModel_root_node = YAML_ROOT( struct_PartialModel );
|
||||
|
||||
const YamlNode* get_partialmodel_nodes()
|
||||
{
|
||||
return &__PartialModel_root_node;
|
||||
}
|
||||
|
||||
|
||||
@@ -770,8 +770,13 @@ static const struct YamlNode struct_ModelData[] = {
|
||||
YAML_STRING("modelRegistrationID", 8),
|
||||
YAML_END
|
||||
};
|
||||
static const struct YamlNode struct_PartialModel[] = {
|
||||
YAML_STRUCT("header", 248, struct_ModelHeader, NULL),
|
||||
YAML_ARRAY("timers", 128, 3, struct_TimerData, NULL),
|
||||
YAML_END
|
||||
};
|
||||
|
||||
#define MAX_RADIODATA_MODELDATA_STR_LEN 24
|
||||
#define MAX_RADIODATA_MODELDATA_PARTIALMODEL_STR_LEN 24
|
||||
|
||||
static const struct YamlNode __RadioData_root_node = YAML_ROOT( struct_RadioData );
|
||||
|
||||
@@ -785,4 +790,10 @@ const YamlNode* get_modeldata_nodes()
|
||||
{
|
||||
return &__ModelData_root_node;
|
||||
}
|
||||
static const struct YamlNode __PartialModel_root_node = YAML_ROOT( struct_PartialModel );
|
||||
|
||||
const YamlNode* get_partialmodel_nodes()
|
||||
{
|
||||
return &__PartialModel_root_node;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user