You realize that if you use any of the CallSub methods and the Activity that your are targeting is not active, the CallSub does nothing? You may want to try modifying your main code to
Sub sendRF(tmpval As String)
Log("I'm in Main's sendRF!")
Log(tmpval)' EMPTY !
...............
End Sub
just to make sure the sub is actually called.
The next two: I'm going to make one assumption: You are using CallSubDelayed2 instead of CallSubDelay2, since CallSubDelayed2 is an actually B4A method, the other is not.
If Main.Last_tag is defined in Main's Globals instead of Process_Globals and CallSubDelayed2 has to start your Activity first, all variables in Globals will be wiped/set to their defaults.
That should have worked. Again, use the logging above and see if the sendRF sub is actually called. It could also be that you are doing more before doing the CallSubDelayed2 which wipes out mTag or you are using a method called CallSubDelay2 that does something weird.