When I first started at ACD.net I was brought in to help program end point devices. This included Cisco 1841's, 2800's, 3600's, 7200, 7500's, Adtran IAD's, Paradyne modem's, Zhone Modem's and Cisco ATA devices. The requirements for programming these was to configure them to have a T1, bonded T1's, DSL, or fiber connection. This uncluded IP's, but also Quality of Service.
With the modem's the QoS was a little different, because we had a different path for the voice going from the router through to the DSLAM (DSL aggrigator) , which hellped us seperated the voice from data. Once you programmed the end point devices, then you had to configure the core network equipment, with IP's routing, and phone numbers in the phone switch.
Configuring with the Adtran's was very similiar to programming in the Cisco IOS. Their customer service was great and they are hardened products. We had very little problems with them. The only challenge that I had programming end point devices was testing if the device was defected or not. The Adtran and Cisco unit's were easy to debug due to advanced debugging commands, but the modem's and Linkysys ATA had a very basic firmware which did not include many debugging options.