Determine robot model in the activator?

I have to keep my urcaps compatible with the cb3, so I’d like to use the toolbar for the e-series and an installation node in its stead for the cb3, but I cannot find a way to determine the robot model in the activator, so currently the e-series shows both the toolbar and the installation node, which is rather ugly.
Is there a way to determine the robot type in the activator (with the last sdk still supporting the cb3)?

Actually I have to keep the installation contribution around to initialize some global variables, so I’d be happy enought just to hide if from the list of urcaps if it’s not a cb3.
I tried returning an empty string in getTitle but it’s still in the list (with no text obviously). Returning null is even worse (it’s still there and it generates an exception when clicked).

Hello @luca

it is not possible to hide an installation node the same way it is possible for Program nodes.
You can take a look at the helloworldswing - URCap sample. There is a way shown on how to determine the robot generation in the service class. See the following picture as reference:

Yes, I’m aware of that and I’m already doing it to show an empty panel if the robot is an e-series, less ugly (at least it doesn’t duplicate what’s already provided by the toolbar) but still not good enough.

I’ve seen some CAPs just use the installation node as a sort of splash screen for their product. Basically just advertising with QR codes linking to the website for help pages, other products, etc. Might not be a terrible option since you can’t hide it and don’t actually need it

Has there been any progress on being able to retrieve the Serial Number in the Activator?

Since I didn’t really like the idea of having a useless installation node, I used this maven plugin to compile two different versions of the jar (one with the installation node and one without).

@nrivas

There might be some API function, but I currently just read the serial number out of the controller like this:

File serialFile = new File("/root/ur-serial");									//Real robot path
		if(serialFile.exists()) {
			try (BufferedReader br = new BufferedReader(new FileReader(serialFile))) {
				serialNumber = br.readLine();				    
				br.close();
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		} else {
			System.out.println("UR Serial Number not found");
		}

Right or wrong, it works lol