According to the corresponding dBm values of getGsmSignalStrength(), the scale appears to be linear. (See dBm values here). But I've observed that in almost all applications, this scale is not used as linear scale.
For example consider Android's src StatusBarPolicy::updateSignalStrength
signal strength = 0 or 99 -> no signal
signal strength >= 12 -> very good signal
signal strength >= 8 -> good signal
signal strength >= 5 -> poor signal
signal strength <5 -> very poor signal
can anyone help me find out the scale using which i can display the signal strength in percentage.