Wednesday, December 25, 2013

E911 testing

A few months ago, I was working on a component that interacted with the Enhanced 911 dialing on a mobile platform. 911 is the emergency telephone number in the US for medical and law enforcement services. Other countries have something similar, like 112 in the European Union.

When I was developing my feature, I had to test out 911 functionality to ensure it was still working. My hope was to substitute the emergency number with something safe, like the number of my spouse. That way, I could call my fake emergency number without actually bothering the police.

I found that there are special requirements placed on mobile platforms for emergency dialing. Even if a GSM device does not have a SIM card, 911 dialing is required to work. An encrypted device does not have to be decrypted for 911 dialing to work, etc. Perhaps to ensure that the strict requirements are met, 911 dialing is handled directly by the telephony chipset. A mobile platform has little control over how 911 dialing works.

So, my testing plan wouldn't work. I would be forced to call 911. The real emergency number. Repeatedly. Now that was a scary thought. I had called 911 only once before that, for a true emergency. I wasn't looking forward to calling the emergency operators. When calling emergency operators, it is inadvisable to hang up immediately. This is for your own safety: you could be in a life-threatening situation. So 911 operators usually call you back or route the police to your location.

I developed a script that I would read out. The basic idea is to convey the following ideas as quickly as possible:
  1. It is not an emergency.
  2. You are an engineer testing stuff.
  3. This is your job, a routine matter for you.
  4. You are happy to be placed on hold.
The last part is important. 911 operators handle life-threatening emergencies all day and all night. They need to prioritize the events and dispatch them as quickly as possible. You want them to put you at the bottom of their priority list.

Here was my full script, which I now know by heart:
Hello, this is not an emergency. I am an engineer working at <company> testing out 911 functionality. Please tell me when to hang up.
While it is only three sentences, I am proud of my writing. The script conveys all the important points. It eliminates words, saving time. Instead of saying "Please let me know when it is safe to hang up", I chose a much more bland "Please tell me when to hang up." It avoids the tricky word safe, which could be misinterpreted to mean that I am in an unsafe situation. It introduces tell me to convey that I am at leisure to be instructed by the operator. Said in a calm and mechanical voice, that script accurately conveys my low rank in their priority list and my very routine intent. It lets the operator know that I am completely safe, and awaiting their instruction. I debated whether I should waste time with a Hello. Saying hello makes the conversation calm and highlights the lack of emergency. Removing it saves a second. After some thought, I kept it.

Somewhere around my second sentence, the operator would cut in and speak, "Please hold" and put me on hold.

There was no wait music.

I don't remember how long I waited, it was well over ten minutes on most calls. It was rare for me to finish all three sentences. On exactly one occasion, the operator listened to my entire script, and then said, "What do we do now?" I replied, "That's it. Please let me know when I can hang up." The operator allowed me to hang up, and we were both done.

On most calls, I was placed on hold.  I would hold the phone very, very patiently. I couldn't hang up, and I couldn't get distracted with something else. In addition, my phone had to stay charging because running out of battery would hang up the call. I couldn't attend a meeting or talk to a colleague. I couldn't go to the bathroom to relieve the stress of calling 911. On my first few calls I was tense. I was worried that I would do the wrong thing and cops would storm into my office building. Luckily, I didn't mess up. After calling them over a dozen times, these calls became routine. The stress involved with calling 911 for testing never went away though.

The operators were always calm and professional. They have to quickly evaluate the emergency of each call, determine the appropriate course of action, and move on to the next call. They don't have time to smile. They don't have time for pleasantries. During the testing, I developed great respect for their capacity. It must be a frustrating and stressful job: dealing with one difficult situation after another. Yet, they were calm, professional, and direct.

After I was off hold, the operator would sometimes quiz me on the nature of my testing. Sometimes they would ask what else was required of them. I was only testing outbound 911 dialing, so I required nothing else. After a polite and serious "thank you", I would hang up. I don't recall the operators ever thanking me or saying bye-bye. Like I said: no time for pleasantries.

My office-mates would perk up when they heard me call 911. It was a serious matter for everyone. Frankly, they were glad it was me making the calls and not them! For my part, I tried making the calls when the office was quiet and empty.

During the development of my feature, I called 911 frequently. I have lost count of how many calls I made. When the feature was done, I was glad to be done with 911 testing. It is one part of my software development I won't miss.