This is normally done with a static variable inside the function itself.
With 'firstTrue' you can do the same between many functions. It this the reason?
In either case, move the global variable 'first' inside the function 'firstTrue', like this:

    bool firstTrue(void)
    {
       static bool first = false;

      if (first) { ...

If 'firstTrue' is used from only ONE function, I would consider to move that static variable 'first' into that function.
And, perhaps change its name to 'firstTime'.