diff options
Diffstat (limited to 'src/libnm-core-impl/nm-setting-serial.c')
| -rw-r--r-- | src/libnm-core-impl/nm-setting-serial.c | 136 |
1 files changed, 64 insertions, 72 deletions
diff --git a/src/libnm-core-impl/nm-setting-serial.c b/src/libnm-core-impl/nm-setting-serial.c index c87de166..3ebcf062 100644 --- a/src/libnm-core-impl/nm-setting-serial.c +++ b/src/libnm-core-impl/nm-setting-serial.c @@ -30,9 +30,9 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE(PROP_BAUD, typedef struct { guint64 send_delay; - guint baud; - guint bits; - guint stopbits; + guint32 baud; + guint32 bits; + guint32 stopbits; char parity; } NMSettingSerialPrivate; @@ -129,22 +129,26 @@ nm_setting_serial_get_send_delay(NMSettingSerial *setting) return NM_SETTING_SERIAL_GET_PRIVATE(setting)->send_delay; } +/*****************************************************************************/ + static GVariant * -parity_to_dbus(const GValue *from) +parity_to_dbus_fcn(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil) { - switch (g_value_get_enum(from)) { + switch (nm_setting_serial_get_parity(NM_SETTING_SERIAL(setting))) { case NM_SETTING_SERIAL_PARITY_EVEN: return g_variant_new_byte('E'); case NM_SETTING_SERIAL_PARITY_ODD: return g_variant_new_byte('o'); case NM_SETTING_SERIAL_PARITY_NONE: + /* the default, serializes to NULL. */ + return NULL; default: - return g_variant_new_byte('n'); + return NULL; } } static void -parity_from_dbus(GVariant *from, GValue *to) +parity_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_GPROP_FCN_ARGS _nm_nil) { switch (g_variant_get_byte(from)) { case 'E': @@ -168,23 +172,11 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) NMSettingSerial *setting = NM_SETTING_SERIAL(object); switch (prop_id) { - case PROP_BAUD: - g_value_set_uint(value, nm_setting_serial_get_baud(setting)); - break; - case PROP_BITS: - g_value_set_uint(value, nm_setting_serial_get_bits(setting)); - break; case PROP_PARITY: g_value_set_enum(value, nm_setting_serial_get_parity(setting)); break; - case PROP_STOPBITS: - g_value_set_uint(value, nm_setting_serial_get_stopbits(setting)); - break; - case PROP_SEND_DELAY: - g_value_set_uint64(value, nm_setting_serial_get_send_delay(setting)); - break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + _nm_setting_property_get_property_direct(object, prop_id, value, pspec); break; } } @@ -195,23 +187,11 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps NMSettingSerialPrivate *priv = NM_SETTING_SERIAL_GET_PRIVATE(object); switch (prop_id) { - case PROP_BAUD: - priv->baud = g_value_get_uint(value); - break; - case PROP_BITS: - priv->bits = g_value_get_uint(value); - break; case PROP_PARITY: priv->parity = g_value_get_enum(value); break; - case PROP_STOPBITS: - priv->stopbits = g_value_get_uint(value); - break; - case PROP_SEND_DELAY: - priv->send_delay = g_value_get_uint64(value); - break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + _nm_setting_property_set_property_direct(object, prop_id, value, pspec); break; } } @@ -224,9 +204,6 @@ nm_setting_serial_init(NMSettingSerial *self) NMSettingSerialPrivate *priv = NM_SETTING_SERIAL_GET_PRIVATE(self); nm_assert(priv->parity == NM_SETTING_SERIAL_PARITY_NONE); - priv->stopbits = 1; - priv->baud = 57600; - priv->bits = 8; } /** @@ -261,26 +238,32 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass) * value usually has no effect for mobile broadband modems as they generally * ignore speed settings and use the highest available speed. **/ - obj_properties[PROP_BAUD] = g_param_spec_uint(NM_SETTING_SERIAL_BAUD, - "", - "", - 0, - G_MAXUINT, - 57600, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + _nm_setting_property_define_direct_uint32(properties_override, + obj_properties, + NM_SETTING_SERIAL_BAUD, + PROP_BAUD, + 0, + G_MAXUINT32, + 57600, + NM_SETTING_PARAM_NONE, + NMSettingSerialPrivate, + baud); /** * NMSettingSerial:bits: * * Byte-width of the serial communication. The 8 in "8n1" for example. **/ - obj_properties[PROP_BITS] = g_param_spec_uint(NM_SETTING_SERIAL_BITS, - "", - "", - 5, - 8, - 8, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + _nm_setting_property_define_direct_uint32(properties_override, + obj_properties, + NM_SETTING_SERIAL_BITS, + PROP_BITS, + 5, + 8, + 8, + NM_SETTING_PARAM_NONE, + NMSettingSerialPrivate, + bits); /** * NMSettingSerial:parity: @@ -311,9 +294,12 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass) _nm_properties_override_gobj( properties_override, obj_properties[PROP_PARITY], - NM_SETT_INFO_PROPERT_TYPE_GPROP(G_VARIANT_TYPE_BYTE, - .gprop_from_dbus_fcn = parity_from_dbus, ), - .to_dbus_data.gprop_to_dbus_fcn = parity_to_dbus, ); + NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_BYTE, + .compare_fcn = _nm_setting_property_compare_fcn_default, + .to_dbus_fcn = parity_to_dbus_fcn, + .typdata_from_dbus.gprop_fcn = parity_from_dbus, + .from_dbus_fcn = _nm_setting_property_from_dbus_fcn_gprop, + .from_dbus_is_full = TRUE)); /** * NMSettingSerial:stopbits: @@ -321,32 +307,38 @@ nm_setting_serial_class_init(NMSettingSerialClass *klass) * Number of stop bits for communication on the serial port. Either 1 or 2. * The 1 in "8n1" for example. **/ - obj_properties[PROP_STOPBITS] = g_param_spec_uint(NM_SETTING_SERIAL_STOPBITS, - "", - "", - 1, - 2, - 1, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + _nm_setting_property_define_direct_uint32(properties_override, + obj_properties, + NM_SETTING_SERIAL_STOPBITS, + PROP_STOPBITS, + 1, + 2, + 1, + NM_SETTING_PARAM_NONE, + NMSettingSerialPrivate, + stopbits); /** * NMSettingSerial:send-delay: * * Time to delay between each byte sent to the modem, in microseconds. **/ - obj_properties[PROP_SEND_DELAY] = - g_param_spec_uint64(NM_SETTING_SERIAL_SEND_DELAY, - "", - "", - 0, - G_MAXUINT64, - 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + _nm_setting_property_define_direct_uint64(properties_override, + obj_properties, + NM_SETTING_SERIAL_SEND_DELAY, + PROP_SEND_DELAY, + 0, + G_MAXUINT64, + 0, + NM_SETTING_PARAM_NONE, + NMSettingSerialPrivate, + send_delay); g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties); - _nm_setting_class_commit_full(setting_class, - NM_META_SETTING_TYPE_SERIAL, - NULL, - properties_override); + _nm_setting_class_commit(setting_class, + NM_META_SETTING_TYPE_SERIAL, + NULL, + properties_override, + NM_SETT_INFO_PRIVATE_OFFSET_FROM_CLASS); } |