The Custom Integrator Show Installment 013 is live. This Podcast finishes up our discussion of the core functionality of UPnP Technologies and takes us into the services within and Internet Gateway Device (IGD). We discuss the differences between the common term “router” and the more appropriate term IGD, especially for the perspective of the UPnP services included within the device. We refer to the diagrams of an IGD posted in the blog for Installment 012 previously (http://thedigitallifestyle.com/cs/blogs/custom/archive/2009/06/26/the-custom-integrator-show-installment-012.aspx). We also talk a bit about testing the IGD’s configuration, especially when it comes to some of the new services available in Windows Home Server and Windows 7.
To summarize some of the associated terminology, I have decided to include a glossary of terms associated with UPnP Technologies. These will come in handy if you decide to dig in deeper as part of understanding how the protocols interoperate between devices. I encourage you to visit the UPnP Forum’s web site at http://www.upnp.org/. A really good document to check out is the UPnP Device Architecture at http://www.upnp.org/resources/documents.asp. You will notice that there are several updates to it. There is a link for downloading all of the published documents as a single file at the top of the list (http://www.upnp.org/resources/upnpresources.zip). That is the easiest way to get all of the specs at one time. There is quite a list of DCPs for all of the services associated with an IGD at http://www.upnp.org/standardizeddcps/igd.asp. It is interesting to note that most of them were ratified in 2001, and indicator of how long these technologies have been out in the industry. Keep in mind, also, that there still is a lot of work being accomplished by the Working Committee on the IGD Version 2 specifications.
BASIC UPnP GLOSSARY
A
action
An action represents a command that a client issues to perform a specific function. It takes zero or more arguments.
argument
An argument is a parameter to an action.
C
control point
A control point is a controller (such as an application) that retrieves device and service descriptions, sends actions to services, queries service state variables and receives events from services. Applications that allow a user to use or run a device, such as a CD player device, are considered control points.
D
device
A device is a container of other services or devices. A device may contain other logical devices.
device description
A device description is a list of the generic properties of all the devices in a physical device, including the services, the device’s hierarchy, and its properties.
device type
A standard device type is denoted by urn:schemas-upnp-org:device: followed by a unique name assigned by a UPnP forum working committee.
There is a one-to-one relationship between UPnP device templates and device types. UPnP vendors may specify additional device types; these are denoted by urn:domain-name:device: followed by a unique name assigned by the vendor, where domain-name is a domain name registered to the vendor.
E
event
An event is a notification of one or more changes in state variables exposed by a service.
evented variable
An evented variable is a state variable for a service that, when changed, triggers an event. Any control points that are subscribed to a variable’s event source then receives notification of the change. A non-evented state variable is never included in an event notification.
P
property
See state variable.
R
root device
A root device is the top-most device in a device tree. For example, if you are accessing a VCR/TV combination device called a viewing station, there are three devices: the viewing station, the VCR, and the TV. The viewing station is considered the root device.
S
service
A service is a logical functional unit. Services expose actions and model some or all of the states of a physical device using state variables.
service description
A service description is a list of the actions a service provides, and the state variables associated with the actions.
service object
A service object is the UPnPControlPointAPI representation of a service. A service object implements the IUPnPService interface.
service type
A service type is a URN that identifies a service. There is a one-to-one relationship between a UPnP service template and a service type. Several standard service types are defined by the UPnP Forum working committees. The service types are in the form urn:schemas-upnp-org:service:serviceType:version. For example, a scanner service type could be urn:schemas-upnp-org:service:scanner:1.
UPnP vendors may specify additional services. Such services are denoted by urn:domain-name:service:serviceType:version where domain-name is a domain name that is registered to the vendor.
state variable
A state variable is a piece of data that describes some part of a service’s state.
U
UDN
Stands for unique device name. A UDN uniquely identifies a device; it is based on the UUID (universal unique ID).
In our next installment, we start diving into the fun stuph – the A/V side of the UPnP Technologies, DLNA, and how devices communicate and handshake across the network. Many integrators really do not need to know the underlying protocols at this level, but I firmly believe that, if you take the time to understand how it works, it makes configuration and troubleshooting a lot easier in the long run.
{"id":null,"mode":"button","open_style":"in_place","currency_code":"GBP","currency_symbol":"\u00a3","currency_type":"decimal","blank_flag_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"TheDigitalLifestyle.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"TheDigitalLifestyle.com","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"TheDigitalLifestyle.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}