Архитектура и система для обеспечения информированности о местоположении

Иллюстрации

Показать все

Изобретение относится к компьютерным системам, в частности к обеспечению информированности о местоположении компьютерных систем и компьютерных устройств. Техническим результатом является обеспечение информации о местоположении для обеспечения возможности работать с услугой различным типам провайдеров, обеспечивающим информацию о местоположении. Способ содержит прием запроса на контекст местоположения вычислительного устройства, сбор данных, связанных с текущим местоположением, от устройств определения местоположения, согласование собранных данных в отношении возможных расхождений относительно текущего местоположения с использованием процесса обработки для собранных данных и генерацию объекта местоположения, доступного для приложений. Носитель содержит компонент управления определением местоположения для маршрутизации данных местоположения, процессор объединения для приема сообщений о местоположении, генерированных из данных местоположения, согласования конфликтов между сообщениями о местоположении и генерации объекта местоположения, и интерфейсы программирования приложений определения местоположения для передачи объекта местоположения от процессора объединения в приложение. 6 н. и 36 з.п. ф-лы, 14 ил.

Реферат

Область техники

Настоящее изобретение относится к компьютерным системам, в частности к обеспечению информированности о местоположении компьютерных систем и компьютерных устройств.

Предшествующий уровень техники

С развитием сети Интернет и ростом интерактивных приложений, доступных для пользователей компьютеров, проявляется возрастающая потребность в универсальных вычислительных операциях. В этом контексте «универсальные вычислительные операции» означают способность компьютеров влиять на большинство повседневных пользовательских задач. Компьютеры называются «компьютерами» (вычислителями) ввиду их способности вычислять или выполнять математические задачи. Компьютеры больше не рассматриваются только лишь как вычислительные машины, а скорее являются персональными помощниками, которые встраиваются в структуру общества в форме персональных цифровых помощников (портативных компьютеров), электронных записных книжек, многофункциональных сотовых телефонов и т.д.

Компьютеры более не требуют пространства для размещения в офисе, чтобы иметь возможность осуществлять вычислительные операции до 20-го десятичного разряда, а вместо этого умещаются на ладони при той же самой вычислительной мощности. Разработчики программного обеспечения, создающие образ персонального помощника в форме новых вычислительных инструментальных средств, создают удобные для пользователя приложения, делая тем самым вычислительный аспект компьютера практически невидимым для пользователей. Такая технология приводит к созданию пользовательских интерфейсов, очень близко напоминающих интерфейсы, предполагающие действия человека, в резком контрасте с компьютерно-читаемыми перфокартами, требовавшимися в прошлом. Другой развивающейся технологией, воздействующей на универсальность вычислений, является беспроводная технология. Расширяющийся рост беспроводных и проводных коммуникационных сетей и новые типы беспроводных сетей создают потребность в компьютерах, обеспечивающих возможность использования выгод от коммуникационных возможностей компьютеров. Беспроводная технология больше не означает сотовый телефон, который должен быть установлен, например, на транспортном средстве с использованием постоянного монтажа, как это имело место в прошлом. Современные батареи ионно-литиевого типа и другие малогабаритные, но мощные батареи питания позволяют сотовым телефонам, устройствам типа PIMS и PDA, дорожным компьютерам (ноутбукам) работать в течение нескольких часов без подзарядки. Долговременная работа вычислительных устройств позволяет пользователю перемещаться с места на место, не принимая в расчет средства подзарядки при использовании устройства. Однако долговременная работа пользователя создает возможности для разработки новых вычислительных продуктов, которые до настоящего времени не рассматривались как необходимые или даже возможные. В качестве одного типа нового вычислительного продукта можно назвать продукт, обеспечивающий информированность о местоположении.

Современные устройства, обеспечивающие информированность о местоположении, являются фрагментарными, не функционируют совместно и не являются наращиваемыми или объединяемыми. Например, системы глобального определения местоположения, домашние сетевые системы, локальные сети и беспроводные телефоны, соединенные с компьютерной системой, способны обеспечить данные местоположения для компьютерной системы. Между этими системами нет общего знаменателя, который обеспечил бы синергетическое использование данных местоположения. Каждое устройство выводит данные местоположения в отличающихся форматах. Поэтому существует потребность в системе обеспечения информированности о местоположении, которая обеспечивает синергетический эффект для продуктов, обеспечивающих информированность о местоположении, чтобы повысить возможности пользователя, взаимодействующего с компьютерной системой.

Сущность изобретения

Соответственно, услуга определения местоположения обеспечивает наращиваемый способ обеспечения информации о местоположении, которая является непознаваемой для провайдера информации, и технологию, используемую для обеспечения этой информации. Способ направлен на прием запроса на получение контекста местоположения вычислительного устройства, сбор данных, связанных с текущим местоположением, от одного или нескольких устройств определения местоположения, согласование собранных данных в отношении расхождений касательно текущего местоположения, и генерацию объекта местоположения, доступного для приложений. Услуга согласует собранные данные множеством методов, например, путем применения иерархического, или метрического процесса, или их обоих.

Для осуществления способа соответствующая услуга включает в себя компонент управления определением местоположения, выполненный с возможностью маршрутизации данных местоположения, процессор объединения, связанный с компонентом управления определением местоположения, для приема одного или более сообщений о местоположении, генерируемых из данных местоположения, например, провайдерами данных, и программное обеспечение, конфигурированное для разрешения любых конфликтов, относящихся к данным, урегулирования конфликтов между сообщениями о местоположении и генерации объекта местоположения; и один или более интерфейсов программирования прикладных программ (API) определения местоположения, связанных с компонентом управления определением местоположения, для передачи объекта местоположения от процессора объединения к прикладной программе (приложению). Объект местоположения динамически обеспечивает для приложения самый последний доступный контекст местоположения для компьютера, на котором исполняется услуга.

Дополнительные варианты осуществления направлены на вопросы защищенности и пиратства в отношении услуги. Например, пользователь или установки по умолчанию могут определить достоверность (надежность) провайдера собираемых данных. Провайдер, который обеспечивает цифровую подпись, относится к известному источнику или является доверительным для пользователя, может быть определен как наиболее доверительный (надежный) провайдер данных местоположения. Дополнительно, отдельные условия, касающиеся защищенности и пиратства, конфигурируются для предотвращения возможности того, чтобы код третьей стороны мог ухудшить защищенность услуги определения местоположения и воспрепятствовать доступу приложений к услуге, если соответствующие условия в отношении пиратства не реализованы.

Дополнительные признаки и преимущества изобретения поясняются в последующем детальном описании иллюстративных вариантов осуществления со ссылками на чертежи.

Краткое описание чертежей

Хотя пункты формулы изобретения определяют признаки настоящего изобретения достаточно детально, однако изобретение вместе с его целями и преимуществами наилучшим образом может быть понято на основе последующего детального описания, иллюстрируемого чертежами, на которых представлено следующее:

Фиг. 1 - блок-схема, иллюстрирующая в обобщенном виде примерную компьютерную систему, в которой может быть использовано изобретения;

Фиг. 2 - блок-схема примерной архитектуры для обеспечения информированности о местоположении, выполненной в соответствии с изобретением;

Фиг. 3 - блок-схема услуги определения местоположения в архитектуре обеспечения информированности о местоположении в соответствии с возможным вариантом осуществления изобретения;

Фиг. 4 - блок-схема, иллюстрирующая примерные соединения в системе обеспечения информированности о местоположении, включающей в себя интерфейсы прикладного программирования в соответствии с вариантом осуществления изобретения;

Фиг. 5 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;

Фиг. 6 - блок-схема, иллюстрирующая обзор методов, используемых в услуге определения местоположения согласно варианту осуществления настоящего изобретения;

Фиг. 7 - диаграмма состояний для задающего распознавателя согласно варианту осуществления настоящего изобретения;

Фиг. 8А - блок-схема управляющей программы (менеджера, администратора) сменных модулей согласно варианту осуществления изобретения;

Фиг. 8В - диаграмма переходов состояний для управляющей программы сменных модулей, взаимодействующей с провайдером, согласно варианту осуществления изобретения;

Фиг. 9 - диаграмма состояний для управляющей программы сменных модулей согласно варианту осуществления изобретения;

Фиг. 10 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;

Фиг. 11 - блок-схема последовательности операций способа, соответствующего варианту осуществления изобретения;

Фиг. 12 - блок-схема последовательности операций способа для иллюстративного провайдера в соответствии с вариантом осуществления изобретения.

Детальное описание изобретения

С помощью чертежей, на которых одинаковыми ссылочными позициями обозначены одинаковые элементы, изобретение проиллюстрировано как реализованное в подходящей вычислительной среде. Хотя не требуется, однако изобретение описано в общем контексте команд, выполняемых компьютером, таких как программные модули, исполняемые на персональном компьютере. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Кроме того, специалистам в данной области техники должно быть ясно, что изобретение может быть реализовано в других конфигурациях компьютерных систем, включая портативные устройства, мультипроцессорные системы, приборы бытовой электроники, основанные на микропроцессорах или программируемые, сетевых ПК, мини-компьютеры, универсальные компьютеры и т.п. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных устройствах памяти.

На фиг. 1 представлена примерная среда 100 вычислительной системы, на которой может быть реализовано настоящее изобретение. Среда 100 вычислительной системы является лишь примером подходящей вычислительной среды и не предполагает никаких ограничений объема использования или функциональных возможностей изобретения. Вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требование связи с каким-либо одним или комбинацией компонентов, показанных в составе приведенной для примера операционной среды 100.

Изобретение может быть использовано с множеством других универсальных или специализированных сред или конфигураций вычислительных систем. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, пригодных для использования изобретения, представляют собой, не ограничиваясь указанным, персональные компьютеры, серверные компьютеры, портативные или карманные устройства, планшетные устройства, мультипроцессорные системы, системы на основе микропроцессоров, приставки, программируемые приборы бытовой электроники, сетевые ПК, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеупомянутых систем или устройств, и т.п.

Изобретение может быть описано в общем контексте команд, выполняемых компьютером, таких как программные модули, исполняемые на компьютере. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных компьютерных запоминающих средах (носителях), включая устройства памяти.Как показано на фиг. 1, приведенная для примера система для реализации изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, не ограничиваясь указанным, блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с блоком 120 обработки. Системная шина 121 может быть любой из различных типов шинных структур, включая шину памяти или контроллер памяти, шину периферийных устройств, локальную шину, использующую любую из разнообразных шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину ISA (Архитектура, соответствующая промышленному стандарту), шину MCA (Микроканальная архитектура), усовершенствованную шину ISA (EISA), локальную шину VESA (Ассоциации по стандартам в области видеоэлектроники), шину PCI (32-разрядная системная шина), также известную как шина Mezzanine.

Компьютер 110 в типовом случае включает в себя множество считываемых компьютером сред (носителей). Считываемые компьютером носители могут представлять собой любые известные носители, к которым компьютер 110 может осуществлять доступ, и включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители. К примеру, но не в качестве ограничения, считываемые компьютером носители могут содержать компьютерные носители записи и коммуникационную среду. Компьютерные носители записи включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители, реализованные любым методом или по любой технологии для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или иные данные. Компьютерные носители записи содержат, не ограничиваясь указанным, оперативную память (RAM, ОЗУ), постоянную память (ROM, ПЗУ), электронно-стираемую программируемую постоянную память (EEPROM, ЭСППЗУ), память с групповой перезаписью (флэш-память) или другие технологии памяти, CD-ROM, универсальные цифровые диски (DVD) или иные устройства памяти на оптических дисках, магнитных кассетах, магнитных лентах, устройства памяти на магнитных дисках или иные магнитные устройства памяти, или любые иные носители, которые могут быть использованы для хранения желательной информации и к которым может быть обеспечен доступ компьютера 110. Коммуникационная среда (среда передачи) в типовом случае воплощает считываемые компьютером команды, структуры данных, программные модули или иные данные в модулированном сигнале данных, таком как несущее колебание или иной транспортный механизм (механизм передачи), и включает в себя любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, у которого одна или более характеристик установлены или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационная среда включает в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводную среду передачи, такую как акустическая, радиочастотная, инфракрасная и другая беспроводная среда передачи. Комбинации любых вышеуказанных сред также должны быть включены в объем носителей (сред), считываемых компьютером.

Системная память 130 включает в себя компьютерный носитель записи в форме энергозависимой и/или энергонезависимой памяти, такой как постоянная память (ПЗУ, ROM) 131 и оперативная память (ОЗУ, RAM) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые подпрограммы, которые способствуют переносу информации между элементами в компьютере 110, например, при запуске, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые непосредственно доступны и/или обрабатываются блоком 120 обработки. В качестве примера, но не ограничения, на фиг. 1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители записи. Например, на фиг. 1 показан дисковод 141 жестких дисков для считывания с несъемного, энергонезависимого магнитного носителя и записи на него, дисковод 151 магнитных дисков для считывания со съемного энергонезависимого магнитного диска 152 и записи на него, и дисковод 155 оптических дисков для считывания со съемного энергонезависимого оптического диска 156 или записи на оптический диск, такой как, например, ПЗУ на компакт-диске (CD-ROM) или иные оптические носители записи. Другие съемные и несъемные, энергозависимые и энергонезависимые компьютерные носители записи, которые могут быть использованы в приведенной для примера операционной среде, включают в себя, не ограничиваясь указанным, кассеты на магнитных лентах, карты флэш-памяти, DVD, цифровые видеомагнитные ленты, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Дисковод 141 жестких дисков в типовом случае соединен с системной шиной 121 посредством интерфейса несъемной памяти, такого как интерфейс 140, и дисковод 151 магнитных дисков и дисковод 155 оптических дисков соединены с системной шиной 23 в типовом случае посредством интерфейса схемной памяти, такого как интерфейс 150.

Дисководы и связанные с ними считываемые компьютером носители, описанные выше и показанные на фиг. 1, обеспечивают хранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг. 1, например, показано, что дисковод 141 жесткого диска хранит операционную систему 144, прикладные программы (приложения) 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть теми же самыми или отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены отличающимися ссылочными позициями для иллюстрации того, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 110 посредством устройств ввода, например, планшета или цифрового преобразователя 164, микрофона 163, клавиатуры 162 или указательного устройства 161, обычно называемого мышью, трекболом или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую панель, спутниковую параболическую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком 120 обработки через интерфейс 160 пользовательского ввода, связанный с системной шиной, но могут быть соединены и посредством других интерфейсов и структур шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB) и т.д. Монитор 191 или иное устройство отображения также соединено с системной шиной 121 через интерфейс, например, такой как видеоинтерфейс 190. Монитор и/или панель сенсорного экрана могут быть физически связаны с корпусом, в котором находится вычислительное устройство 110, такое как персональный компьютер планшетного типа. Кроме того, компьютеры, такие как вычислительное устройство 110, также могут включать в себя другие периферийные устройства вывода, например, громкоговорители 197 и принтер 196, которые могут быть соединены через интерфейс 194 устройств вывода или иное подобное средство.

Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой ПК, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой обычный сетевой узел и в типовом случае включает в себя многие или все из элементов, описанных выше применительно к компьютеру 110, хотя на фиг. 1 показано только устройство 181 памяти. Логические соединения, показанные на фиг. 1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (сеть широкого охвата - WAN) 173, но могут включать в себя и другие сети. Такие сетевые среды являются общеизвестными в офисах, компьютерных сетях предприятий, интранетах и в Интернет. Например, в настоящем изобретении компьютерная система 110 может являться компьютером-источником, из которого осуществляют перемещение данных, а удаленный компьютер 180 может представлять собой компьютер-адресат. Отметим, однако, что компьютеры-источники и адресаты не требуют соединения посредством сети или иных средств, а вместо этого данные могут перемещаться через любую среду, в которую может осуществляться запись с платформы-источника и из которой может осуществляться считывание платформой-адресатом или платформами-адресатами.

При использовании в сетевой среде локальной сети (LAN) компьютер 110 соединяется с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде глобальной сети (WAN) компьютер 110 в типовом случае включает в себя модем 172 или иное средство для установления связи в глобальной сети 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, соединен с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут быть сохранены в удаленном устройстве памяти. В качестве примера, но не ограничения, фиг. 1 иллюстрирует удаленные прикладные программы 185 как хранящиеся в устройстве памяти 181. Следует иметь в виду, что показанные сетевые соединения приведены для примера, и что могут быть использованы и другие средства установления канала связи между компьютерами.В последующем описании изобретение представлено со ссылками на действия и символические представления операций, которые выполняются одним или несколькими компьютерами, если не указано иное. Понятно, что такие действия и операции, которые иногда упоминаются как исполняемые компьютером, включают в себя манипуляции, осуществляемые блоком обработки компьютера над электрическими сигналами, представляющими данные в структурированной форме. Эти манипуляции преобразуют данные или сохраняют их в некоторых ячейках в системе памяти компьютера, что приводит к изменению конфигурации или иному изменению работы компьютера способом, хорошо понятным для специалистов в данной области техники. Структуры данных, в которых данные сохраняются, являются физическими ячейками памяти, которые имеют конкретные свойства, определяемые форматом данных. Однако, хотя изобретение описано в вышеуказанном контексте, не предусматривается, что он является ограничительным, так как специалистам в данной области техники должно быть понятно, что различные действия и операции, описанные ниже, могут быть также реализованы и аппаратными средствами.

На фиг. 2 представлена блок-схема архитектуры для услуги 210 обеспечения информированности о местоположении. Как показано, услуга 210 определения местоположения может представлять собой услугу 212 пользовательского режима и может устанавливаться на компьютере, таком как компьютер 110, или на портативном вычислительном устройстве. Услуга 212 определения местоположения принимает данные от множества приложений 220(1-3) и извне устройства/компьютера, как показано позицией 214. Услуга 210 определения местоположения связана в устройстве с компонентом 215 режима ядра (привилегированного режима), таким как драйверы 222(1-2) и компонентом 224 файловой системы Windows®. Драйверы 222(1-2) и компоненты 224 файловой системы Windows® показаны как связанные с аппаратными средствами 216. Каждый драйвер 222(1-2) показан связанным с соответствующим ему устройством 226(1-2) аппаратных средств. Компонент 224 файловой системы Windows® показан связанным с устройством 230 памяти, которое может представлять собой базу данных для хранения данных файловой системы Windows®. Услуга 210 определения местоположения может быть также связана с приложением MapPoint® или иным приложением, конфигурированным для запроса информации местоположения и совместимым с вариантами осуществления или устройством 240 для обеспечения данных местоположения. Услуга 210 определения местоположения также связана с активным каталогом 260 через облегченный протокол службы каталогов (LDAP) 250. Услуга 210 определения местоположения также может быть связана с внешним устройством/клиентом 280, которое может быть связано с сервером 270 присутствия через коммуникационный канал 214. Более конкретно, услуга 210 определения местоположения может обеспечить информацию местоположения, которая может быть извлечена, например, клиентом услуги RTC (связи в реальном времени). Клиент услуги RTC может затем передать информацию к серверу 270 присутствия.

На фиг. 3 представлена блок-схема, иллюстрирующая более детально услугу 210 определения местоположения. Как показано, услуга 210 определения местоположения включает в себя один или несколько интерфейсов программирования прикладных программ (API) определения местоположения, процессор 340 объединения и компонент 330 управления определением местоположения. Компонент 330 управления определением местоположения взаимодействует со сменными модулями 310” провайдеров и распознавателями 320. В одном варианте осуществления компонент 330 управления определением местоположения включает в себя пользовательский агент 332, кэш 334, главный распознаватель 336 и управляющую программу 338 сменных модулей. На фиг. 3 также показаны провайдеры 310', которые могут являться провайдерами воспринимаемых данных, которые требуют, по меньшей мере, некоторой интерпретации, таких как специфические для устройств данные. Например, провайдер системы глобального определения местоположения может предоставить данные широты и долготы. В одном варианте осуществления провайдеры 310' передают воспринятые (измеренные) данные на сменные модули 310” провайдеров как специфическую для устройств информацию местоположения или специфические для датчиков данные соответствующих устройств. Сменные модули 310” провайдеров могут осуществлять нормализацию данных, преобразовывать данные в стандартную форму и передавать данные на компонент 330 управления определением местоположения. В других вариантах осуществления провайдеры 310' могут преобразовывать данные перед передачей данных на сменные модули 310” провайдеров. Конкретные возможности провайдеров 310' определяются требованиями и ограничениями при проектировании. Например, компонент 330 управления определением местоположения может получить исходную (необработанную) информацию от одного или нескольких устройств через провайдеров 310' или из иных источников. В одном варианте осуществления компонент 330 управления определением местоположения нормализует данные и преобразует данные в сообщения определения местоположения.

В одном варианте осуществления компонент 330 управления определением местоположения конфигурирован в составе услуги 210 определения местоположения. Сменные модули 310” провайдеров нормализуют данные, однако управляющая программа 338 сменных модулей, которая является частью системы управления определением местоположения, будет дополнительно нормализовать данные перед их приемом и пересылкой в главный распознаватель 336. Каждый из компонентов, таких как главный распознаватель 336, процессор 340 объединения, управляющая программа 338 сменных модулей указывают на готовность к приему информации. После этого в одном варианте осуществления, приложения и компоненты, которые извлекают данные, делают это после того, как компоненты 336, 338, 340 имеют данные готовыми для их извлечения.

Распознаватели 320 принимают измененные и преобразованные, а в некоторых случаях исходные (необработанные) данные, такие как специфическая для устройств информация определения местоположения, и интерпретируют эти данные. Распознаватели 320 могут быть реализованы как сменные модули для услуги 210 определения местоположения и могут включать в себя преобразователи специфической для устройств информации местоположения и источники данных. Распознаватели 320 функционируют для преобразования специфической для устройств информации местоположения в обогащенную (доступную для чтения и интерпретации множественными приложениями) информацию местоположения с использованием источников данных, доступных для логического вывода новых данных из существующих данных. В одном варианте осуществления распознаватель 320 может преобразовывать, по меньшей мере, часть данных, полученных от одного или более устройств. Каждый распознаватель 320 может иметь возможность интерпретировать, по меньшей мере, один тип исходных (необработанных) или частично декодированных данных от провайдера 310. Например, распознаватель 320 может предназначаться для интерпретации только данных типа 802.11. В этом случае распознаватель должен регистрироваться в управляющей программе 330 для управления определением местоположения как интерпретирующий только данные типа 802.11 и будет принимать только данные этого типа. Дополнительно каждый распознаватель 320 может конфигурироваться с возможностью преобразования информации другого распознавателя, причем в этом случае распознаватель может не иметь возможности преобразовывать исходные данные или частично декодированные данные. На фиг. 3 также показан компонент 360 файловой системы Windows®, который принимает данные от сервера 210 определения местоположения.

Процессор 340 объединения генерирует текущий объект местоположения. Услуга 210 определения местоположения проверяет текущие данные местоположения посредством сменного модуля или различных сменных модулей, включая сменные модули 310” провайдера и сменные модули 320 распознавателя. В этом контексте сменный модуль может интерпретироваться как одна или несколько динамически загружаемых библиотек, или динамически подключаемых библиотек (DLL), или как динамически загружаемый модуль для расширения функциональных возможностей программного обеспечения, программно-аппаратных средств или системных компонентов.

Обзор системы

На фиг. 4 представлена блок-схема системы 210 определения местоположения и окружающих ее компонентов, в целом иллюстрирующая, что услуга 210 действует как структура, которой не известно о каких-либо приложениях, а также устройствах и источниках данных, от которых может быть получена информация. Услуга 210 определения местоположения представлена как включающая в себя процессор 340 объединения, кэш 334, агент 332 пользователя (пользовательский посредник, прикладной процесс, обеспечивающий доставку сообщений для пользователя), управляющую программу (менеджер) 338 сменных модулей и главный распознаватель 336. Услуга 210 определения местоположения также включает в себя сервер 450 WinFS SQL (файловой системы Windows на языке структурированных запросов), API (интерфейс программирования приложений) 404 провайдера определения местоположения, API 414 распознавателя местоположения, API 416 уведомления о местоположении, API 418 пользователя услуги определения местоположения, и API 420 управления определением местоположения. Сервер 450 WinFS SQL связывает услугу 210 определения местоположения с сервером 460 уведомления и с API 418 пользователя услуги определения местоположения и API 416 уведомления о местоположении. API 416 и 418 могут взаимодействовать с приложением 220.

API 418 пользователя услуги определения местоположения обеспечивает возможность приложению направить запрос о текущем местоположении компьютера, на котором исполняется услуга 210 определения местоположения. API 414 распознавателя местоположения определяет, какие функции необходимо реализовать сменному модулю для регистрации в услуге. Как показано, API 418 пользователя услуги определения местоположения получает данные от сервера 450 WinFS и пересылает данные к одному или нескольким приложениям 220(1-n). API 420 управления определением местоположения получает данные от множества местоположений, таких как процессор 340 объединения, агент 332 пользователя, кэш 334, управляющая программа 338 сменных модулей и главный распознаватель 336, и пересылает данные назад и вперед в одно или несколько приложений 220. API 420 управления определением местоположения обеспечивает возможность конфигурирования параметров услуги и компонентов. API 420 управления определением местоположения также обеспечивает возможность добавления и удаления провайдеров и распознавателей. API 416 уведомления о местоположении получает данные от услуги 460 уведомления и посылает данные в приложения 220. API 416 уведомления о местоположении позволяет приложению регистрироваться для уведомления о том, когда местоположение компьютера, на котором исполняется услуга, изменяется. В одном варианте осуществления отдельный API, являющийся API регистрации приложения, позволяет приложениям регистрироваться для получения уведомлений и определения текущего местоположения. В одном варианте осуществления приложения должны сначала регистрироваться для получения данных местоположения. После регистрации приложение может выбрать режим уведомления в связи с предварительно определенными причинами. API 414 распознавателя местоположения посылает и принимает данные от управляющей программы 412 сменных модулей и задающего распознавателя 336 и передает данные в пользовательскую базу данных Windows® 408(1) распознавателя местоположения, активный каталог 408(2) распознавателя местоположения и в MapPoint® 408(3) распознавателя местоположения, а также к другим распознавателям местоположения, которым могут быть полезны данные местоположения. Главный распознаватель 336 несет ответственность за управление распознаванием информации местоположения. Когда управляющая программа 412 сменных модулей посылает на главный распознаватель 336 информацию местоположения, зависящую от устройства, главный распознаватель 336 маршрутизирует данные к распознавателям, которые являются свободным и могут распознать информацию.

Более конкретно, согласно фиг. 4, услуга 210 прямого определения местоположения может быть описана на примере, начиная с провайдеров 402. Провайдер, например провайдер 802.11, получает данные сканирования. Если провайдер 402 определяет, что имеются новые точки доступа, то провайдер связывает адрес МАС (управления доступом к среде передачи) и информацию об уровне сигнала в сообщение 802.11. Провайдер 802.11 сигнализирует, что информация готова для управляющей программы 338 сменных модулей. Управляющая программа 338 сменных модулей принимает наборы информации и сигнализирует главному распознавателю, что имеется новое сообщение о местоположении, которое должно быть распознано.

Затем главный распознаватель 336 извлекает сообщение о местоположении от управляющей программы 338 сменных модулей. Затем главный распознаватель 336 пересылает сообщение о местоположении к агенту 332 пользователя.

Агент 332 пользователя проверяет кэш 334 на наличие этого сообщения о местоположении. Кэш 334 может возвратить в ответ промах кэша (сообщение о попытке доступа к той части кэшированного файла, которая отсутствует в кэше). В этом случае кэш 334 кэширует данные и проверяет выходной буфер. Путем проверки выходного буфера кэша местоположение пользователя может быть определено на основе сообщения о местоположении. Если кэш не определяет местоположение пользователя, то агент 332 пользователя генерирует промах.

После того как агент 332 пользователя генерировал промах, главный распознаватель 336 посылает сообщение о местоположении к распознавателю 408, такому как распознаватель 408(2) активного каталога (AD). AD распознаватель 408(2) определяет информацию адреса МАС в сообщении о местоположении, соединяется с активным каталогом и отыскивает местоположение точки доступа. Затем AD распознаватель 408(2) возвращает местоположение точки доступа в главный распознаватель 336 в качестве сообщения о местоположении. Затем главный распознаватель 336 посылает сообщение о местоположении агенту 332 поль