Getting MSL and AGL values from barometer reading

I have a use case that requires me to get MSL/AGL altitude readings from pressure sensors, and I have a bunch of doubts on this topic.

I know the vehicle_air_data message contains the MSL value from pressure sensor (baro_alt_meter) but I was wondering if AGL is also being calculated somewhere. Or if not, what’s the best way to add the functionality to PX4?

As for reading these values, looks like the baro_alt_meter is being sent through the HIGHRES_IMU mavlink message. If I want both the MSL and AGL values from the barometer, should I modify this message or would some other message be more appropriate.
Another concern I had was, I have multiple instances of barometer in our UAV. However I’ve realized that

  1. vehicle_air_data is only being calculated for the first instance of the baro sensor

  2. There exist the SCALED_PRESSURE{,_2,_3} messages which are meant to be used for multiple instances of barometers. But these messages don’t include the MSL/AGL values that I need.

So, what would be the most appropriate way to solve my issues? Making vehicle_air_data publish for all instances of baro sensors is trivial and I can also repeat the MSL calculations to make it have a, say, baro_alt_relative_meter or something, but I also need to publish these values in a way through multiple message types. I don’t think changing SCALED_PRESSURE* to send altitudes is the right thing to do because they’re only meant to send raw sensor data. Should I just copy the logic for calculating MSL from pressure to my GCS and do it through the SCALED_PRESSURE* messages manually?

Sorry for the long-winded question, hope I’m being clear enough and I’d appreciate any response.

For agl iirc it’s just baro alt at any location minus baro alt from takeoff. So it’s relative alt from the takeoff location. It becomes something to manage when flying in mountains or changing atmospheric conditions.