| 85 | } |
| 86 | |
| 87 | ConfigurationKeyMap getConfigurationKeys() |
| 88 | { |
| 89 | |
| 90 | //VALIDVALUES NOTATION: |
| 91 | // (pat) for ConfigurationKey::CHOICE and CHOICE_OPT: |
| 92 | // * A:B : range from A to B in steps of 1 |
| 93 | // * A:B(C) : range from A to B in steps of C |
| 94 | // * A:B,D:E : range from A to B and from D to E |
| 95 | // * A,B : multiple choices of value A and B |
| 96 | // * X|A,Y|B : multiple choices of string "A" with value X and string "B" with value Y |
| 97 | // For CHOICE_OPT, the input value can also be empty. |
| 98 | // |
| 99 | // (pat) I believe the following is valid for ConfigurationKey::REGEX and REGEX_OPT |
| 100 | // * ^REGEX$ : string must match regular expression |
| 101 | // For REGEX_OPT, the input value can also be empty. |
| 102 | // |
| 103 | // (pat) for ConfigurationKey::VALRANGE looks like the syntax is this subset: |
| 104 | // A:B : range from A to B in steps of 1 |
| 105 | // A:B(C) : range from A to B in steps of C, but C is ignored. |
| 106 | // and a comma is silently ignored? |
| 107 | // The input value is constrained to be a number. |
| 108 | |
| 109 | /* |
| 110 | TODO : double check: sometimes symbol periods == 0.55km and other times 1.1km? |
| 111 | TODO : .defines() vs sql audit |
| 112 | TODO : Optional vs *_OPT audit |
| 113 | TODO : configGetNumQ() |
| 114 | TODO : description contains "if specified" == key is optional |
| 115 | TODO : crossCheck possibility here: GSM.CellOptions.RADIO-LINK-TIMEOUT should be coordinated with T3109. |
| 116 | TODO : These things exist but aren't defined as keys. |
| 117 | - GSM.SI3RO |
| 118 | - GSM.SI3RO.CBQ |
| 119 | - GSM.SI3RO.CRO |
| 120 | - GSM.SI3RO.TEMPORARY_OFFSET |
| 121 | - GSM.SI3RO.PENALTY_TIME |
| 122 | - GPRS.SGSN.External |
| 123 | - GPRS.SGSN.Host |
| 124 | - 'GPRS.TBF.Downlink.NStuck','250',0,0,'Maximum number of blocks sent to non-advancing TBF' |
| 125 | - 'GPRS.MS.ResponseTime','4',0,0,'Allow the MS this much processing time to respond to an assignment message, specified as a count of RLC blocks. The MS must send its response this many blocks after receiving the message. Can also add an arbitrary additional delay if necessary.' |
| 126 | - ... |
| 127 | */ |
| 128 | |
| 129 | ConfigurationKeyMap map; |
| 130 | ConfigurationKey *tmp; |
| 131 | |
| 132 | tmp = new ConfigurationKey("CLI.SocketPath","/var/run/OpenBTS/command", |
| 133 | "", |
| 134 | ConfigurationKey::FACTORY, |
| 135 | ConfigurationKey::FILEPATH, |
| 136 | "", |
| 137 | false, |
| 138 | "Path for Unix domain datagram socket used for the OpenBTS console interface." |
| 139 | ); |
| 140 | map[tmp->getName()] = *tmp; |
| 141 | delete tmp; |
| 142 | |
| 143 | tmp = new ConfigurationKey("Control.Call.QueryRRLP.Early","0", |
| 144 | "", |
no test coverage detected