Re: libnm and updating wifi bitrate

On Wed, 2018-04-11 at 23:17 -0400, Doug Torrance wrote:

I'm coding a small utility using libnm.  I'd like the bitrate of wifi
devices to update over time, just like in the "Connection
Information" dialog of nm-applet.  However, the bitrate never seems
to change.

The code below illustrates my problem:

#include <NetworkManager.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[])
      NMClient *client;
      const GPtrArray *devices;
      NMDevice *device;

      client = nm_client_new(NULL, NULL);
      devices = nm_client_get_devices(client);
      device = g_ptr_array_index(devices, 0);

      while (1) {


you never iterate the mainloop, hence, no D-Bus signals from
NetworkManager are processed, and the value never changes.

You need to run the mainloop, like g_main_loop_run() or

Also, note that unless you keep references to the instances, they might
be destroyed while the mainloop processes events. So, you could take a
reference, but better is probably to re-fetch it every time (or watch
whether the device gets deleted in the meantime, by listening to



This program just prints the same number over and over again -- the
value of the bitrate when the program was first started.  Meanwhile,
I can open an nm-applet dialog simultaneously and watch the bitrate
change merrily over time.

What am I missing?

Thank you!

Attachment: signature.asc
Description: This is a digitally signed message part

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]