diff --git a/include/modem.h b/include/modem.h index 8ca5f83b..260ee19a 100644 --- a/include/modem.h +++ b/include/modem.h @@ -26,6 +26,8 @@ extern "C" { #endif +#include + #include struct ofono_modem; @@ -56,6 +58,10 @@ int ofono_modem_set_integer(struct ofono_modem *modem, const char *key, int value); int ofono_modem_get_integer(struct ofono_modem *modem, const char *key); +int ofono_modem_set_boolean(struct ofono_modem *modem, + const char *key, bool value); +bool ofono_modem_get_boolean(struct ofono_modem *modem, const char *key); + struct ofono_modem_driver { const char *name; diff --git a/src/modem.c b/src/modem.c index b5d6f4ee..ed6f870b 100644 --- a/src/modem.c +++ b/src/modem.c @@ -44,6 +44,7 @@ enum ofono_property_type { OFONO_PROPERTY_TYPE_INVALID = 0, OFONO_PROPERTY_TYPE_STRING, OFONO_PROPERTY_TYPE_INTEGER, + OFONO_PROPERTY_TYPE_BOOLEAN, }; struct ofono_modem { @@ -951,6 +952,9 @@ static int set_modem_property(struct ofono_modem *modem, const char *name, case OFONO_PROPERTY_TYPE_INTEGER: property->value = g_memdup(value, sizeof(int)); break; + case OFONO_PROPERTY_TYPE_BOOLEAN: + property->value = g_memdup(value, sizeof(bool)); + break; default: break; } @@ -983,6 +987,9 @@ static gboolean get_modem_property(struct ofono_modem *modem, const char *name, case OFONO_PROPERTY_TYPE_INTEGER: memcpy(value, property->value, sizeof(int)); return TRUE; + case OFONO_PROPERTY_TYPE_BOOLEAN: + memcpy(value, property->value, sizeof(bool)); + return TRUE; default: return FALSE; } @@ -1002,6 +1009,13 @@ int ofono_modem_set_integer(struct ofono_modem *modem, OFONO_PROPERTY_TYPE_INTEGER, &value); } +int ofono_modem_set_boolean(struct ofono_modem *modem, + const char *key, bool value) +{ + return set_modem_property(modem, key, + OFONO_PROPERTY_TYPE_BOOLEAN, &value); +} + const char *ofono_modem_get_string(struct ofono_modem *modem, const char *key) { const char *value; @@ -1024,6 +1038,17 @@ int ofono_modem_get_integer(struct ofono_modem *modem, const char *key) return value; } +bool ofono_modem_get_boolean(struct ofono_modem *modem, const char *key) +{ + bool value; + + if (get_modem_property(modem, key, + OFONO_PROPERTY_TYPE_BOOLEAN, &value) == FALSE) + return FALSE; + + return value; +} + struct ofono_modem *ofono_modem_create(const char *type) { struct ofono_modem *modem;