_MODEL_TW3 = 0x20,
_MODEL_RPI3 = 0x40,
_MODEL_ROBOT = 0x80,
- _MODEL_FHUB = 0x100,
- _MODEL_DA = 0x200,
} tizen_model_t;
+typedef enum {
+ _DEV_UNKNOWN = 0,
+ _DEV_COMMON = 0x1,
+ _DEV_DA = 0x2,
+ _DEV_FHUB = 0x4,
+} tizen_device_t;
+
/* For optimization, make this extern and define in a shared C file */
extern tizen_profile_t profile;
static tizen_model_t model = _MODEL_UNKNOWN;
+static tizen_device_t device = _DEV_UNKNOWN;
extern bt_plugin_info_t *headed_plugin_info;
/* Accessing system info */
model = _MODEL_RPI3;
else if (!strcasecmp(model_name, "gems") || !strncasecmp(model_name, "ServingBot", 10))
model = _MODEL_ROBOT;
- else if (!strncasecmp(model_name, "Family Hub", 10))
- model = _MODEL_FHUB;
- else if (!strcasecmp(model_name, "Robot Vacuum Cleaner") ||
- !strcasecmp(model_name, "Smart Dryer") ||
- !strcasecmp(model_name, "Smart Washer") ||
- !strcasecmp(model_name, "DDMS") ||
- !strcasecmp(model_name, "Smart Cooktop") ||
- !strcasecmp(model_name, "Smart Range") ||
- !strcasecmp(model_name, "Refrigerator") ||
- !strcasecmp(model_name, "Echo Heating System Controller") ||
- !strcasecmp(model_name, "Bespoke Washer") ||
- !strcasecmp(model_name, "Bespoke Dryer") ||
- !strcasecmp(model_name, "Appliance Emulator") ||
- !strcasecmp(model_name, "Smart Oven") ||
- !strcasecmp(model_name, "Smart AC") ||
- !strcasecmp(model_name, "AI Vision Refrigerator") ||
- !strncasecmp(model_name, "AI Home", 7))
- model = _MODEL_DA;
else
model = _MODEL_COMMON;
return model;
}
+static inline tizen_device_t get_tizen_device_type(void)
+{
+ char *device_type = NULL;
+
+ if (__builtin_expect(device != _DEV_UNKNOWN, 1))
+ return device;
+
+ system_info_get_platform_string("http://tizen.org/system/device_type", &device_type);
+
+ if (device_type == NULL) {
+ device = _DEV_COMMON;
+ return device;
+ }
+
+ if (!strcasecmp(device_type, "Refrigerator(Family Hub)"))
+ device = _DEV_FHUB;
+ else if (!strcasecmp(device_type, "Robot Vacuum") ||
+ !strcasecmp(device_type, "System A/C") ||
+ !strcasecmp(device_type, "Washer") ||
+ !strcasecmp(device_type, "Dryer") ||
+ !strcasecmp(device_type, "Cooktop") ||
+ !strcasecmp(device_type, "Range") ||
+ !strncasecmp(device_type, "Refrigerator", 12) ||
+ !strcasecmp(device_type, "Appliance") ||
+ !strcasecmp(device_type, "Oven"))
+ device = _DEV_DA;
+ else
+ device = _DEV_COMMON;
+
+ free(device_type);
+ return device;
+}
+
static inline bool get_tizen_feature_supported(char *feature)
{
bool is_supported = false;
#define TIZEN_FEATURE_HID_DEVICE_SUPPORTED (get_tizen_feature_supported(BT_FEATURE_HID_DEVICE) == true)
#define TIZEN_FEATURE_PBAP_SUPPORTED (get_tizen_feature_supported(BT_FEATURE_PBAP) == true)
#define TIZEN_FEATURE_ROBOT_REFERENCE ((get_tizen_model()) == _MODEL_ROBOT)
-#define TIZEN_FEATURE_FHUB_REFERENCE ((get_tizen_model()) == _MODEL_FHUB)
-#define TIZEN_FEATURE_DA_REFERENCE (get_tizen_model() & (_MODEL_FHUB | _MODEL_DA))
+#define TIZEN_FEATURE_FHUB_REFERENCE ((get_tizen_device_type()) == _DEV_FHUB)
+#define TIZEN_FEATURE_DA_REFERENCE ((get_tizen_device_type()) & (_DEV_FHUB | _DEV_DA))
#define CONTAINER_FILE "/run/systemd/container"
#define DBUS_HOST_SYSTEM_BUS_ADDRESS "unix:path=/run/host/dbus/system_bus_socket"