A cohesive framework for software defined vehicle and infotainment unit integration and communication
A vehicle hardware abstraction layer proxy manages vehicle properties and services to enable standardized communication between ECUs, SDVs, and infotainment systems, addressing complexity and fragmentation in modern automobiles, enhancing software compatibility and user control.
Patent Information
- Application Number
- PCT/US2023/086312
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-12-28
- Publication Date
- 2025-07-03
AI Technical Summary
Modern automobiles with numerous ECUs and ECMS face complexity and fragmentation in communication between vehicle subsystems and infotainment systems, limiting flexibility and compatibility with both OEM and third-party software applications.
A cohesive framework utilizing a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and services, enabling indirect communication between ECUs, SDVs, and infotainment systems through standardized mappings and network addresses, allowing OEM and third-party software applications to interact with vehicle subsystems.
Facilitates standardized and flexible communication between vehicle subsystems and infotainment systems, enhancing software availability and compatibility across different vehicle models and manufacturers, reducing fragmentation and increasing user control options.
Smart Images

Figure US2023086312_03072025_PF_FP_ABST
Abstract
Description
A COHESIVE FRAMEWORK FOR SOFTWARE DEFINED VEHICLE AND INFOTAINMENT UNIT INTEGRATION AND COMMUNICATIONBACKGROUND
[0001] A modern automobile utilizes a variety of Electronic Control Units (ECUs) and Electronic Control Modules (ECMs) for the control of various electrical systems or subsystems within the vehicle. Typically, each ECU operates as a stand-alone embedded system within the electronic systems of the automobile responsible for controlling one or more of the subsystems of the vehicle. Some modem automobiles may have well over 150 distinct ECUs, drastically increasing the count of distinct ECU related components, the cost, and the complexity of the vehicle.SUMMARY
[0002] In general, this disclosure is directed to an improved communication framework for use in automobiles. More specifically, a cohesive framework is described which provides a platform upon which software applications, also referred to as “apps,” may indirectly communicate with both Electronic Control Unit (ECU) type automobile subsystems and Software Defined Vehicle (SDV) type automobile subsystems through an integrated infotainment system of a vehicle. Similarly, the platform permits both the ECU type automobile subsystems and the SDV type automobile subsystems to indirectly communicate back to such software applications running on the infotainment system of the vehicle using tlie platform. Moreover, the software applications are not limited to eOEM installed and / or OEM provided software applications. For instance, a compatible vehicle integrated infotainment system may be configured to download and install software applications at the request and direction of a user or vehicle owner from an application marketplace.
[0003] A vehicle hardware abstraction layer proxy executing within the vehicle, for instance, within the infotainment system of the vehicle, provides a mapping between OEM installed automobile subsystems and properties of the vehicle, such as vehicle speed, vehicle thermostat settings, vehicle braking status, and so forth. Assuming sufficient permissions, the vehicle hardware abstraction layer proxy may communicate updated properties to the vehicle subsystems. For instance, if the vehicle temperature is increased at a user interface, the vehicle hardware abstraction layer proxy may communicate the increased temperate property to the appropriate vehicle subsystem based on the mapping. In a similar way, a software application executing at the infotainment system may retrieve updated temperatureinformation from the vehicle hardware abstraction layer proxy. In other instances, a software application installed on the infotainment system may communicate a new temperature setting to the vehicle hardware abstraction layer proxy, which in turn is communicated to the appropriate vehicle subsystem to alter the temperature of the vehicle. Safeguards provided by existing vehicle subsystems are unaffected to prevent unauthorized changes, such as a user installed software application erroneously or maliciously atempting to alter vehicle braking conditions. Such an instruction would be ignored by the vehicle subsystem itself and may additionally be subjected to a check for permissions or authorization by the vehicle hardware abstraction layer proxy.
[0004] In at least one example, a method is described which executes, using processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services. In such an example, the method may generate a mapping from each of the vehicle properties to a network address unique to one of the vehicle sendees. In response to receiving input specifying a new value for one of the vehicle properties, the method may update the mapping with the new' value for the one of the vehicle properties by at least writing the new value into the one of the vehicle properties in the database system. In such an example, the method may transmit the new value over an in- vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping.
[0005] In another example, a vehicle computing system is described which includes processing circuitry’, a database system, an in-vehicle network, and memory’ having instructions stored thereupon that, when executed, the instructions configure the processing circuitry of the vehicle computing system to perform operations. In such an example, processing circuitry’ of the vehicle computing system may execute a vehicle hardware abstraction layer proxy’ that manages the database system of vehicle properties and vehicle services. According to such an example, the vehicle computing system may generate a mapping from each of the vehicle properties to a network address on the in-vehicle network unique to one of the vehicle services. In response to receipt of input specifying a new value for one of the vehicle properties, the vehicle computing system may update the mapping with the new' value for the one of the vehicle properties by at least waiting the new value into the one of the vehicle properties in the database system. In at least one example, the vehicle computing system transmits the new value over the in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping.
[0006] In yet another example, computer-readable storage media is described having instructions stored thereupon that, when executed, configure processing circuitry of a vehicle computing system to perform operations. For instance, the instructions may configure the vehicle computing system to execute a vehicle hardware abstraction layer proxy that manages die database system of vehicle properties and vehicle services. In such an example, the instructions may configure the vehicle computing system to generate a mapping from each of the vehicle properties to a network address unique to one of the vehicle sendees. In response to receipt of input specifying a new value for one of the vehicle properties, the instructions may configure the vehicle computing system to update the mapping with the new' value for the one of the vehicle properties by at least writing die new value into the one of the vehicle properties in the database system. In at least one example, the instructions configure the vehicle computing system to transmit the new value over an in-vehicle network of the vehicle to the netw ork address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping.
[0007] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below'. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS
[0008] FIG. 1 illustrates an example vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services, in accordance with one or more techniques of this disclosure.
[0009] FIG. 2 illustrates another example of a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle sendees, in accordance with one or more techniques of this disclosure.
[0010] FIG. 3 illustrates another example of a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services, in accordance with one or more techniques of this disclosure.
[0011] FIG. 4 illustrates an example vehicle having various types of in-vehicle networks communicably interfaced with a VHAL proxy, in accordance with one or more techniques of this disclosure.
[0012] FIG. 5 is a block diagram illustrating further details of one example of a VHAL proxy executing via processing circuitry, such as the VHAL proxy shown in each of FIGS. 1-4 in accordance with techniques of this disclosure.
[0013] FIG. 6 is a flow' chart illustrating an example mode of operation for processing circuitry to implement a cohesive framework for software defined vehicle and infotainment unit integration and communication, m accordance with techniques of this disclosure.
[0014] Like reference characters denote like elements throughout the text and figures.DETAILED DESCRIPTION
[0015] FIG. 1 illustrates an example vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services, in accordance with one or more techniques of this disclosure. In the example of FIG. 1, vehicle hardware abstraction layer proxy 150 (VHAL proxy 150) is configured to manage vehicle properties 116A, 116B, 116C, 1 16N (collectively 116) and vehicle services 120A, 120B, 120C, 120N (collectively 120) of vehicle 100 using database system 110.
[0016] Further depicted in the example of FIG. 1 is infotainment system 130 communicably interfaced with VHAL proxy 150. Processing circuitry may be configurable to implement or execute VHAL proxy 150, including carrying out operations on behalf of VHAL proxy 150 to manage vehicle properties 1 16 and vehicle services 120 of vehicle 100 using database system 110. Database system 110 provides mapping 140 between vehicle properties 116 and vehicle sendees 120 which are reachable over in-vehicle network 1 15 using network address 117A, 117B, 1 17C, 117N (collectively 117). One network address 117 uniquely corresponds to each one of vehicle services 120. For instance, mapping 140 depicts vehicle service 120A is uniquely associated with network address 117A. Vehicle property 116A is also associated with vehicle service 120A, Updates to vehicle property 1 16A may be communicated to vehicle service 120A using network address 1 17A which may be determined using mapping 140. Similarly, a different mapping 140 is provided by database sy stem 110 for vehicle service 120B which is reachable over in-vehicle network 115 via network address 117B. In the example of Figure 1 , vehicle service 120C is similarly reachable over in-vehicle network 115 via network address 117C and vehicle service 120N which is reachable over in-vehicle network 115 via network address H7N. In alternative examples, vehicle services 120A, 120B, 120C, 120N may be reachable over multiple different in-vehicle networks 115 using corresponding network addresses 1 17 A, 1 17B, 1 17C, 117N recorded in database system 1 10 using one or more mappings 140.
[0017] In the example of FIG. 1, infotainment system 130 is depicted as providing input 131 to VHAL proxy 150. For example, a vehicle operator may have selected a new radio station via infotainment system 130. In such an example, input 131 is provided to VHAL proxy 150 specifying new value 132 (e.g., such as a newly selected radio station). In the example of FIG. 1, new value 132 is written by VHAL proxy 150 into database system 1 10, depicted here as property 116A updated by VHAL proxy 150 with new value 132. Further depicted in the example of FIG. 1, new value 132 is communicated from database system 110 to vehicle service 120A using network address 117A, resulting in new value 132 now being available at vehicle sendee 120A. Vehicle service 120A may, in response to obtaining new value 132, utilize, act upon, or otherwise consume new value 132 to cany out some action associated with vehicle property 1 16A for which new value 132 was provided. For instance, continuing with the example above, vehicle service 120A may change the radio station by re-tuning the radio to the radio station as specified by new value 132.
[0018] Vehicle 100 generally refers to automobiles such as cars, trucks, and vans, for the sake of simplicity and clarity within the description. However, techniques of this disclosure are not so limited. Rather, techniques described herein may be applied to a wide variety of vehicle 100 types, including motorcycles, recreational vehicles, farm vehicles and farm implements, aircraft, watercraft, and so forth. Ultimately, vehicles 100 having multiple vehicle subsystems will benefit from the techniques of the disclosure described herein.
[0019] In the example of FIG. 1, processing circuitry 199 may include the logic circuitry that responds to and processes the basic instructions that, when executed, cause a computing system to perform operations. Processing circuitry' 199 may include a centralized computing system module such as a System On a Chip or “SOC” type processing circuitry type device or a collection of interconnected components, such as a central processing unit (CPU) for executing operations and computer instructions, memory' for storing computer instructions, Input / Output (I / O) components, communication busses, signal processing components, and so forth.
[0020] Database system 1 10 may provide an organized collection of structured information, or data, stored electronically within memory and / or persisted within a datastore. Database system 110 may implement a database management system (DBMS) which manages stored data, relationships, database queries, updates, conflicts, and so forth. Collectively, the data stored within a database system, the DBMS, along with associated applications may be referred to as a “database system,” which is often shortened to simply a “database.” Many structured query' language (SQL) type database system HO implementations arrange datamodeled using row's and columns in a series of tables having defined relationships between them to make data storage, data processing, and data querying more efficient. Data may be accessed, managed, modified, updated, controlled, and organized using a structured query’ language (SQL) for writing and querying data.
[0021] Network addresses 117A, 117B, 117C, and 117N (collectively 117) refer to one or more addresses on in-vehicle network 115 and / or one or more network addressable nodes on in-vehicle network 115 reachable using one of network addresses 1 17. Also referred to as vehicular communication systems, each in-vehicle network 1 15 provides a communication path to at least one vehicle sendee 120 node, vehicle service 120 unit, vehicle sendee 120 service module, software defined vehicle service 120 (SDV vehicle service 120), Electronic Control Unit (ECU) vehicle service 120, Electronic Control Module (ECM) vehicle sendee 120, or an end-point of in-vehicle network 115 capable of interacting with VHAL proxy 150 and / or other in-vehicle nodes, units, and modules providing one or more vehicle services 120. Some in-vehicle networks 115 are exclusive to one specific vehicle service 120. Other in- vehicle networks 115 are commonly shared amongst multiple vehicle sendees 120.
[0022] Mapping 140 establishes an association between the mapped elements as managed by database system 110. In the example of FIG. 1, vehicle mapping 140 expressly links network address 117A with property 116A and vehicle service 120A. Therefore, VHAL proxy 150 may read, alter, update, subscribe, or broadcast data in association with vehicle service 120 utilizing network address 117A specified by mapping 140.
[0023] For instance, consider an example where vehicle sendee 120A is a vehicle speedometer. In such an example, VHAL proxy 150 may read the current speed property 116A from vehicle service 120A utilizing network address 117A. VHAL proxy 150 may store that information or relay the “current speed” vehicle property 116A to another vehicle service 120 or to an OEM provided or third-party provided software application. For example, VHAL proxy 150 may be configured to iteratively report current vehicle speed to an auxiliary speedometer readout provided to a navigational application executing via infotainment system 130.
[0024] In a similar manner, VHAL proxy 150 may receive input 131 with new' value 132 for a given vehicle property 1 16 and store new value 132 in association with vehicle property 116 within database system 110. Consider for instance, the example from above with the navigational software application executing on infotainment system 130. The navigational software application may provide a user input interface via which to set a “ride comfort” preset, wholly separate from an OEM provided “ride comfort” input (e.g., a button or switchtypically on a center console for setting ride comfort damping presets to soften or stiffen front and / or rear springs or change responsiveness of the springs to alter comfort settings based on road and driving conditions, sometimes labeled as “sport,” “cruise,” “comfort,” “off-road,” “snow,” and so forth). In such an example, assuming sufficient access permissions, the navigational software application may accept as input 131 new value 132 for vehicle property 116 associated with “ride comfort” settings. The navigational software application may then communicate the setting to VHAL proxy 150 which writes the updated value into database system 110. For instance, VHAL proxy 150 may write new value 132 to vehicle property 116A (now' ride comfort in this example rather than current speed). Depending on the configuration of the corresponding vehicle sendee 120A specified via mapping 140, VHAL proxy 150 may push new value 132 writen into vehicle property 116A to vehicle sendee 120A using network address 117A according to mapping 140 or VHAL proxy 150 may simply permit vehicle sendee 120A to read new value 132 written into vehicle property 116A for vehicle service 120A using network address 117A. Other communication methods include vehicle sendee 120A subscribing to changes reflected by property 116A or VHAL proxy 150 broadcasting new value 132 using network address 1 17A.
[0025] Regardless of the specific communication mechanism, through the use of VHAL proxy 150, each of OEM provided software applications, OEM provided user controls (e.g., switches, buttons, etc.) and third-party provided software applications executing at infotainment system 130 or indirectly interfaced with infotainment system 130 may read data from, and optionally update new values 132 to, variously provided vehicle services 120 of vehicle 100 through VHAL proxy 150.[00261 In the example of FIG. 1, vehicle hardware abstraction layer proxy (VHAL proxy) 150 may be configured as a collection of executable instructions stored within memory or other persistent storage, that, when executed, defines various vehicle properties 116 OEMs may implement for a specific automobile. VHAL proxy 150 may further define metadata for each vehicle property 116, for example, whether a given vehicle property 116 is an int, string, floating point variable, Boolean, or an enumerated set, as well as permissions specifying whether or not any change modes are allowed tor each vehicle property 116. VHAL proxy 150 may further define access permissions (e.g., access parameters) specifying operations for each vehicle property 116 such as read, write, update, subscribe, etc.
[0027] As described in greater detail below, vehicle 100 may have multiple distinct vehicle services 120. For instance, a modem vehicle 100 may have Electronic Control Units (ECUs) for managing engine timing, transmission shifting, engine fuel mixture, automatic brakingsystems, collision avoidance systems, and so forth. Various Software Defined Vehicle (SDV) modules may control vehicle services 120 such as radio and other multi-media operations, user configurable preferences such as interior LED colors and brightness, radar adaptive cruise control, and HVAC and / or climate control settings, such as interior cabin temperature, humidity, fresh-air intake, and so forth. A typical vehicle 100 may have dozens of different vehicle services, some of which may be ECU controlled whereas others are controllable using SDV modules. Some of vehicle services 120 may be user configurable and user selectable, such as audio volume, radio controls, climate temperature setings, whereas other vehicle services 120 may be wholly outside of the user controllable domain, such as engine air to fuel mixtures and engine ignition timing. Other settings, such as RPM limiter settings (also referred to as a “rev limiter”) may be vehicle dependent. For instance, an OEM manufacturer of an automobile may configure RPM shift thresholds for a family minivan that are both unviewable and unconfigurable for a vehicle operator. In other examples, the same OEM manufacturer of a different automobile, such as a sports car, may provide a user interface to a vehicle operator via which the operator may not only view the RPM current state, but optionally re-configure the RPM shift thresholds within a pre-configured range established by the OEM manufacturer. Managing the increasing complexity and number of ECUs in a vehicle has become a key challenge for automobile manufacturers (also referred to as original equipment manufacturers or OEMs). Certain automobile manufacturers are beginning to transition away from the ECU model entirely in favor of adopting a Software Defined Vehicle (SDV) model for the various vehicle services 120. However, the transition is not. immediate. Automobiles manufactured during this transition period will therefore operate ECU type vehicle subsystems concurrently alongside SDV type vehicle subsystems.
[0028] Vehicle Hardware Abstraction Layer (VHAL) proxy 150 described herein may define various configurable vehicle properties which are implemented by the vehicle original equipment manufacturers. Each vehicle property may contain property metadata. For instance, such property metadata may define a variable type (e.g., such as INT, string. Boolean, etc.), access permissions, immutability and / or overwrite and update restrictions, as well as a uniquely addressable node and optionally a communication path via which the uniquely addressable node is reachable. For instance, in a vehicle network configuration with only a single in-vehicle network (IVN), a single uniquely addressable node address is sufficient. However, some vehicles may have multiple distinct in-vehicle networks, in which case, the property metadata may specify both a communication path (e.g., which in-vehicle network connects vehicle sendee 120 with VHAL proxy 150, as well as the address oruniquely addressable node address or location via which to communicate with vehicle service 120 using the specified communication path.
[0029] The metadata of vehicle properties 116 for each vehicle servi ce 120 may additionally specify role-based access lights, such as which services are permitted to update a given vehicle property or may specify a required token or authentication parameter which may be provided with a request to update a given vehicle property. Generally, all vehicle properties may be read and / or viewed by other vehicle services, although this may optionally be restricted by specifying read access permissions using the metadata tor one or more vehicle properties. Each vehicle service may implement separate access permissions which supersede any access permissions specified by VHAL proxy 150. For example, vehicle service 12.0 responsible for ABS braking may prohibit changes by other vehicle services not included on a whitelist, regardless of whether or not other vehicle services are permitted to update metadata for the ABS vehicle service proxy.
[0030] Generally, OEM manufacturers will provide a proprietaiy user interface via which to view and optionally configure certain vehicle properties (e.g., such as cabin temperature settings). Using the example of cabin temperature, the display may be as simple as a rotatable analog dial that points to a general temperature setting (e.g., warmer, cooler, off, etc.) providing both a display output and a user interface via which to provide input (e.g., by rotating the dial). However, modem automobiles tend to have far more sophisticated digitized systems, and thus, a modern automobile may provide a graphical user interface (GUI) readout of the current temperature setting via an in-vehicle touch-sensitive display screen and also permit a vehicle operator and / or vehicle occupants to modify the current temperature setting via the GUI readout displayed to the touch-sensitive display screen. Other vehicle properties, such as vehicle speed and vehicle gear selection may likewise be digitized, but controllable via analog interface devices, such as the ‘"gas pedal” of the vehicle and the gear selector of the vehicle, respectively. Note that while the gas pedal and gear selector may operate in an analog manner, they may nevertheless communicate with a corresponding vehicle service 120 via digitized communications, also referred to as “drive by wire.” Stated differently, there may be no mechanical linkage whatsoever between the gas pedal and the engine of the vehicle or between the gear selector and the transmission of the vehicle.
[0031] As more and more subsystems of modern vehicles first transition from analog communication to digital communications and then further transition from ECM type subsystems to fully digitized software based SDV type subsystems, there is an opportunity to provide a more centralized communications platform through the use of a cohesiveframework providing both software defined vehicle subsystem communications and infotainment unit integration.
[0032] While vehicles lacking VHAL proxy 150 may have an infotainment system which communicates with various vehicle services, the systems of such a vehicle will be highly fragmented due to the use of different and sometimes incompatible communication modes between vehicle services. Moreover, vehicles lacking VHAL proxy 150 are typically preconfigured at the time of manufacture to link user interface user displays to the corresponding vehicle sendee. Such a configuration essentially results in a "‘hard coding” of vehicle services to vehicle interfaces. For instance, if a user presses a button for “next radio station” in their vehicle, the module responsible for controlling the changing of radio stations may be already hard-coded by the automobile manufacturer. Other software applications which are configured to change the radio station of the same vehicle may likewise be hard-coded to communicate using the correct communication path to tire module responsible for control of the radio.
[0033] Consider a modem vehicle with infotainment system 130 but lacking VHAL proxy 150. It is likely that such a vehicle has radio controls on the steering wheel, additional radio controls within infotainment system 130, and yet additional radio controls via dedicated buttons on a center console. In the absence of VHAL proxy 150 of the radio controls and radio control interfaces may be separately pre-configured with a hard-coded communications path to the radio control module. To complicate matters further, the same manufacturer may utilize a different radio, different radio control module, and / or different radio user controls and interfaces for different trim levels of the same base vehicle, necessitating the manufacturer to separately pre-configure a hard-coded communications path between the different components. Hie problem multiplies in complexity' as different vehicle base models are considered for the same OEM manufacturer, as different model years are considered, and as different suppliers are introduced, which may have inconsistent communication settings, even for otherwise identical vehicle service modules. Multiply the same problem across different OEM manufacturers and the problem of fragmentation becomes highly complex and difficult to manage.
[0034] Mow' consider a modern vehicle which implements VHAL proxy 150. Unlike the examples above, an OEM manufacturer need not hard-code the communications path linking each user display and user control interface with a specified vehicle service. Rather, the OEM manufacturer need only pre-configure a unique network address 117 for each vehicle sendee 120 into database system 110 to establish mapping 140 between vehicle service 120 inquestion and the communications mechanism by which to communicate with vehicle service 120. In such a way, user displays and / or user controls which are to interact with vehicle service 120 may be configured simply by pointing the user display or user control to the appropriate mapping 140 in database system 1 10 as managed by VHAL, proxy 150. Even if the user controls utilize a different communication address or communication type, use of VHAL proxy 150 abstracts the inconsistencies away from vehicle service 120 in question through mapping 140 in database system 1 10. Still further, both the underlying vehicle service 120 and the user controls may be altered, and the link between them will not be broken, assuming mapping 140 in database system 110 is configured to reflect the change.
[0035] By abstracting the hard-coded communication paths for each of vehicle services 120 away from the user controls, and vice versa, significant flexibility' is provided by VHAL proxy 150 to expose much wider software availability to vehicle owners and end users. For instance, rather than requiring a user to utilize an OEM manufacturer provided software application or the OEM manufacturer provided controls, software applications installed onto infotainment system 130 may be utilized to display information obtained from database system 110 and optionally control user configurable vehicle services (such as the radio, climate controls, etc.) through a non-propnetary software application. For instance, consider a user that downloads and installs a third-party software application to infotainment system 130 for controlling the LED light color and intensity within vehicle 100. The third-party software application need not be configured to communicate using network address 117 for the module responsible for controlling the interior LED lights of vehicle 100. Rather, the third-party software application need only be configured to exchange information with database system 110 using VHAL proxy 150 to update the relevant vehicle property 116 associated with control of the interior LED lights.
[0036] Moreover, VHAL, proxy 150 may establish standardization for various vehicle services 120 and vehicle properties, such that a third-party software application need not even be configured specifically for the particular OEM manufactured vehicle model, year, trim, etc. Rather, vehicle properties that are common across multiple vehicles may be standardized and thus referenced by both the OEM vehicle manufacturers to control the various vehicle sen-ices 120 and vehicle properties 116 as well as third-party software application developers to reference the same vehicle sen-ices 120 and vehicle properties 116. For example, the OEM manufacturer may configure a software application of vehicle 100 to iteratively obtain and display the current speed for the vehicle. Given that vehicle property 1 16 for current speed is ubiquitous across all automobiles manufactured for public sale, VHAL proxy 150 mayimplement a standardized nomenclature for the “current speed” vehicle property 116, such that OEM provided software applications and third-party applications, may simply reference that standardized vehicle property name. The only change required across different automobile makes, models, years, and trims for different vehicles would be an update to mapping 140 to the network address 117 for the corresponding “current speed” vehicle property 116 within database system 110. In such a way, an appropriately configured software application may obtain and display the “current speed” for the vehicle without having a priori knowledge of vehicle sendee 120 module type (e.g., ECU, SDV, etc.,), without a priori knowledge of the vehicle communications network type or communications path to that vehicle service, and without a priori knowledge of the particular vehicle into which the software application is being installed. Applied similarly, software applications installed into the automobiles infotainment system 130 may likewise provide radio controls, climate controls, interior dome light controls, window controls, moonrooftsunroof controls, door lock controls, and so forth.
[0037] In the example of FIG. 1 , infotainment system 130, provides a digital system that allows drivers and passengers to control various vehicle functions. Infotainment systems 130 may also connect to devices within near proximity to vehicle 100, such as smartphones and tablets, and may exchange information with those connected devices. Infotainment system 130 may also be referred to as tin In-Vehicle Infotainment (I VI) system, a “digital cockpit,” or a Multi-Media System (MMS), with the term “infotainment” being a combination of the words “inform ation” and “entertainment.” Typical functions of an infotainment system include: playing music from a streaming service, control of an FM / AM broadcast radio, control of satellite -based radio services, streaming video display, navigation applications, hands-free smartphone communication (e.g., BLUETOOTH connectivity with a connected smartphone), and the control and output of other entertainment content. However, many automobile manufacturers are transitioning additional vehicle services 120 into user interfaces accessible via infotainment system 130, sometimes as exclusive controls and sometimes as redundant controls. For instance, OEMs may link control of the windows and moonroof / sunroof, window shades, and moonroof / sunroof shade into infotainment system 130 of vehicle 100, thus permitting control of these vehicle services through infotainment system 130. Separate controls may remain for such vehicle services 120, such in the instance of vehicle windows and sunshades. In other examples, OEMs have transitioned certain vehicle services 120, such as control of heated and cooled seats and steering wheels, into infotainment system 130, such that no other user interface, control, button, switch, or leverexists tor such vehicle services, outside of a user interface output by infotainment system 130. Further to the examples above, use of VHAL proxy 150 would pennit non-OEM software applications and user interfaces to manage such vehicle sendees 120 (e.g., operate the function of the heated and cooled seats and steering wheel) outside of the domain of the OEM provided user interface executing at infotainment system 130.
[0038] In some examples, processing circuitry 199 of vehicle 100 executes infotainment system 130, including executing an operating system for infotainment system 130 capable of executing OEM provided and third-party (e.g., non-OEM) provided software applications. For instance, a vehicle owner, vehicle occupant, and / or vehicle passenger may download an “app” from an “app store” (e.g., a cloud connected marketplace for software applications) and install the app at infotainment system 130. In some examples, an original equipment manufacturer may pre-install an OEM provided software application at infotainment system 130. In other examples, tire original equipment manufacturer provided software application may be downloaded and installed to infotainment system 130 while being operated by a vehicle owmer or operator. For instance, the original equipment manufacturer may push a new software application or an update to an existing software application to infotainment system 130 via an “over-the-air-update” also referred to as an OTA update. Such updates may provision new firmware for ECUs and ECMs of the vehicle or new software parameters for SDV modules of the vehicle. In other examples, infotainment system 130 executes a software application configured as a vehicle widget, such as a small user interface which is frequently utilized by a vehicle occupant (e.g., an infotainment software application for changing the radio station or altering the climate controls). In some examples, infotainment system 130 may execute a customer installed software application which is not provided by the original equipment manufacturer of vehicle 100. In some examples, infotainment system 130 may execute a communications bridge application for communicating between infotainment system 130 of vehicle 100 and a mobile device communicably interfaced with vehicle 100. Stated differently, processing circuitry 199 of infotainment system 130 may communicate with various types of software applications from various points of origin, including non-OEM software developed by third-party software developers and software downloaded by a user from a marketplace for software applications. In a similar manner, infotainment system 130 may receive input, data, commands, and user interactions from a variety of software types. For instance, in some examples, processing circuitry 199 receives input 131 from an original equipment manufacturer installed software application. Infotainment system 130 may receive input, data, commands, and user interactions from a software application executing atinfotainment system 130 having a user interface configured as a vehicle widget. Infotainment system 130 may receive input, data, commands, and user interactions from a customer installed software application. Infotainment system 130 may receive input, data, commands, and user interactions from a mobile device communicably interfaced with vehicle 100 through a communications bridge application.
[0039] lire detailed description set forth below, in connection with the appended drawings, is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. Tire detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
[0040] In accordance with the examples of this disclosure, the term “or” may be interrupted as “and / or” where context does not dictate otherwise. Additionally, while phrases such as “one or more” or “at least one” or the like may have been used in some instances but not others; those instances where such language was not used may be interpreted to have such a meaning implied where context does not dictate otherwise.
[0041] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, tire functions may be stored, as one or more instructions or code, on and / or transmited over a computer- readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another (e.g., pursuant to a communication protocol). In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium ,
[0042] FIG. 2 illustrates another example of a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services, in accordance with oneor more techniques of this disclosure. In the example of FIG. 2, vehicle hardware abstraction layer proxy 250 (VHAL proxy 250) is configured to manage vehicle properties 216A, 216B, 216C, 216N (collectively 216) and vehicle services 220A, 220B, 220C, 220N (collectively 220) of vehicle 200 using database system 210. In such an example, database system 210, infotainment system 230, and processing circuitry 299 are interconnected with VHAL proxy 250. VHAL proxy 250 may communicate with vehicle services 220 over in-vehicle networks 215A, 215B (collectively 215) using network addresses 217A, 217B, 217C, 2.17N (collectively 217) for each of respective vehicle services 220 according to mappings 240 managed by database system 210. Additionally depicted is VHAL proxy 250 receiving request 233 from vehicle service 220N and transmitting new value 232 from VHAL proxy 250 to infotainment system 230. Software application 2.91 (also referred to as “app”) is further depicted as executing at infotainment system 230.
[0043] New value 232 may originate from a user interface, from another vehicle service 220 of vehicle 200, or from a sensor reading within vehicle 200. Vehicle properties 216 may be updated -with new' values 232 during vehicle 200 operation. Regardless of a point of origination, new value 232 is stored as vehicle property 216N for vehicle service 22 ON within database system 210. Consider for instance, new' value 232. originating from a user interface output to infotainment system 230. In such an example, an operator of vehicle 200 may change a radio station of vehicle 200 using an interface output to infotainment system 230, resulting in new' value 232 being written by VHAL proxy 250 into database system 210 updating vehicle property 216N. In such an example, new value 2.32 may be sent over in- vehicle network 215 to vehicle service 220N responsible for changing the radio station. In at least one example, VHAL proxy 250 determines which vehicle service 220N new' value 232 may be transmitted to using the association recorded into database system 210 via mapping 240. VHAL proxy 250 may additionally determine network address 217N for vehicle property 216N updated with new' value 232 via mapping 240 and responsively transmit new' value 232 to vehicle service 220N over in-vehicle network using network address 217.
[0044] In other examples, new value 2.32 originates from a source other than a user interface output to infotainment system 230. Stated differently, VHAL proxy 250 may transmit vehicle property 216 to one of vehicle services 220 upon request 233, regardless of vehicle service 220 originating request 233 is the same vehicle service 220 associated with corresponding vehicle property 216 according to mapping 240. For instance, any vehicle service 220 may request 233 any vehicle property 216 of concern to vehicle service 220, assuming adequate read permissions. For instance, consider an example where vehicle service 220 is responsiblefor locking all doors of vehicle 200 and providing an audible alert as confirmation. In such an example, vehicle service 220 may be directly responsible for engaging the door locks, but not responsible for controlling the windows. Nevertheless, vehicle service 220 may query' for the status of the windows, for instance, by sending request 233 to VHAL proxy 250 requesting tlie present status (e.g., new value 232) of vehicle property 216N. Vehicle service 220 responsible for the door locks of vehicle 200 may provide different notifications based on whether the windows are closed or open, according to new value 232. For instance, vehicle service 220 responsible for the door lock function may cause vehicle 200 to output a different audible alert (e.g., by activating a hom or audible speaker alert) indicating the doors are not locked or indicating the doors are locked but vehicle 200 is not secure due to the windows being down. In related examples, vehicle service 220 responsible for the door lock function may transmit a message to VHAL proxy 250 for output via infotainment system 230. For instance, vehicle service 220 responsible for the door lock function may provide as input, new value 232 to VHAL proxy 250 updating property 2.16 with a status or value indicating the doors are not locked or the doors are locked but the windows are not secure. VHAL proxy 250 may then push the updated door lock status to vehicle service 220 responsible for outputting notifications and alerts to infotainment system 230 of vehicle 200.
[0045] In other examples, VHAL proxy 250 may respond to a request 233 from vehicle service 220 responsible for outputting notifications and alerts to infotainment system 230 of vehicle 200 and return new value 232 (e.g., indicating the updated door lock status) to vehicle service 220 responsible for outputting notifications and alerts to infotainment system 230 which generates as output, a message regarding the updated door lock status. For instance, such a message may be output to infotainment system 230, to software application 291, to a dashboard of vehicle 200, or the message may be provided as an audible alert. In related examples, vehicle sendee 220 responsible for outputting notifications and alerts may provide some combination of audible tones, a message output for display to infotainment system 230 or a dashboard display, an alert to a smartphone, etc. In such a way, vehicle properties 216 may be shared and acted upon by other vehicle services 220 of vehicle 2.00 without those other vehicle services having a priori knowledge of network address 217 for any given vehicle service 220, as communications over in-vehicle networks 215 using network address 217 may be determined by, and even facilitated by VHAL proxy 250 using mapping 240.
[0046] In yet other examples, vehicle properties 216 may be shared amongst vehicle sendees through VHAL proxy 250 without any notification whatsoever being provided to an operator of vehicle 200. For example, new' value 232 may originate from another vehicle service 220and be written by VHAL proxy 250 into vehicle property 216N within database system 210 to modify operational characteristics of vehicle 200 without necessitating any notification to or message to be output for display. Consider for instance vehicle 200 entering a high- elevation area and responsively updating air-fuel ratios within an engine of vehicle 200. In such an example, an altitude sensor and / or mass-airflow -sensor of vehicle 200 may sense changes in elevation and / or changes in oxygen density (e.g., based on altitude, temperature, etc.). In such an example, the altitude sensor and / or mass-airflow-sensor of vehicle 200 may capture new value 232 and report new value 232 to VHAL proxy 250. In other examples, VHAL proxy 250 may iteratively monitor for changes to new' value 232 accessible from vehicle service 220 responsible for the altitude sensor and / or mass-airflow-sensor of vehicle 200 or VHAL proxy 2.50 may periodically retrieve new value 232 accessible from vehicle service 220 responsible for the altitude sensor and / or mass-airflow-sensor of vehicle 200. Regardless of how new' value 232 is obtained by VHAL proxy 250, new' value 232 may be sent to a different vehicle service 220 which is not associated with the altitude sensor and / or mass-airflow-sensor of vehicle 200. For instance. VHAL proxy 250 may transmit new value 232 obtained from the altitude sensor and / or mass-airflow-sensor of vehicle 200 to an engine control module vehicle service 220 responsible for changes to ignition timing, fuel rate, airfuel mixtures, etc,, so as to optimize internal combustion engine characteristics of vehicle 200 through varying environmental conditions such as changes in altitude and / or ambient temperature.
[0047] VHAL proxy 250 may receive a request 233 for new value 232 and responsively retrieve and return new' value 232 to an originator of request 233. For instance, VHAL proxy 250 may receive request 233 from infotainment system 230 or from one of the multiple vehicle services 220. For example, request 233 may specify vehicle property 216N and request the current value of vehicle property 216N be provided by VHAL proxy 250. In such an example, VHAL proxy 250 may, in response to request 233, retrieve new-’ value 232 (or retrieve the latest and most current value written into vehicle property 216M) from database system 210 and return new value 2.32, as retrieved from database system 210, back to one of vehicle services 220 having originated request 233. When request 233 originates from infotainment system 230 or from software application 291 executing at infotainment system230, VHAL proxy 250 may responsively return new value 232 to infotainment system 230 or from software application 291 having originated the request.
[0048] Separate from VHAL proxy 250 responding to a request 233 for new value 232,VHAL proxy 250 may monitor for changes to mapping 240 within database sy stem 210 andresponsively send out new values 232 associated with changes to vehicle properties 216 detected based on the monitoring. For instance, processing circuitry 299 of vehicle 200 may monitor for changes to vehicle properties 216 associated with vehicle services 220 within database system 210. In response to determining one of vehicle properties 216 is updated with new value 232 within database system 210, VHAL proxy 250 may push new' value 232 to one of vehicle services 220 corresponding to one of vehicle properties 216 based on mapping 240. Stated differently, when monitoring by VHAL proxy 250 detects a change to vehicle property 216 has occurred, VHAL proxy 250 may retrieve and push new value 232 to vehicle sendee 220 corresponding to vehicle property 216 based on mapping 240. Monitoring for changes and responsively pushing out such changes may be used by vehicle sendee 220 which reacts to changes in vehicle properties which originate from other vehicle sendees. In oilier examples, when monitoring by VHAL proxy 250 detects a change to vehicle property 216 has occurred, VHAL proxy 250 may broadcast new value 232 to multiple of vehicle sendees 22.0 sharing in-vehicle network 215 specifying network address 217 unique to one of vehicle sendees 220 based on mapping 240. In other examples, when monitoring by VHAL proxy 250 detects a change to vehicle property 216 has occurred, VHAL proxy 250 may send new value 232 to multiple vehicle services 220 having previously requested 233 VHAL proxy 250 to provide future updates upon subsequent changes.
[0049] VHAL proxy 250 may communicate new' value 232 to one or more vehicle sendees 220, infotainment system 230, and / or software application 291 executing at infotainment system 230 in a variety of ways. In some examples, VHAL proxy receives new value 232 and responsive to writing new value 232 into one of vehicle properties 216 in database system 210, VHAL proxy may push new value 232 to one of vehicle services 220. For instance, VHAL proxy 250 may push new value 232 to one of vehicle services 220 corresponding to which one of vehicle properties 216 was updated, by responsively transmitting new' value 232 to one of vehicle sendees 220 over in-vehicle network 215 using network address 217 corresponding vehicle services 220 based on mapping 240. In other examples, VHAL proxy 250 may write new value 232 into one of vehicle properties 216 in database system 210 and listen for request 233 from one of vehicle sendees 220 corresponding to one of vehicle properties 216. In such an example, VHAL proxy may responsively return new' value 232 to one of vehicle services 220 having originated request 233. In other examples, VHAL proxy may receive new value 232 and subsequent to writing new value 232 into one of vehicle properties 216 in database system 210, VHAL proxy may broadcast new value 232 to multiple of vehicle services 220. For instance, VHAL proxy may broadcast new value 232 toall vehicle sendees sharing in-vehicle network 215, VITAL proxy may select a push and / or broadcast transmission based on a communication protocol utilized by in-vehicle network 215. In related examples, VHAL proxy may broadcast new value 232 to all vehicle services sharing in-vehicle network 215 specifying network address 217 unique to one of vehicle services 220 based on mapping 240, such that one of vehicle services 220 associated with network address 217 specified with the broadcast will recognize and capture new value 232 broadcast to in-vehicle network 215, In other examples, a header specifying network address 217 may be utilized or an initiation sequence corresponding to or based on network address 217 may be utilized as part of the broadcast.
[0050] Vehicle 200 may have multiple distinct in-vehicle networks 215. Distinct in-vehicle networks 2.15 may be of different in-vehicle network 2.15 Types or of the same type. For instance, multiple distinct in-vehicle networks 215 of vehicle 200 may each be Controller Area Network (CAN) type in-vehicle networks 215, with each in-vehicle network 215 being used for different vehicle services 22.0. In other examples, one in-vehicle network 215 may be a CAN type in-vehicle network 215 while another in-vehicle network 215 of vehicle 200 is an Ethernet type in-vehicle network 215.
[0051] In some examples, VHAL proxy 250 may communicate and / or interact with various vehicle services 220 within vehicle 200 using network address 2.17 exposed by the corresponding vehicle service 220. For example, an engine control module responsible for ignition timing and air-fuel mixtures may expose a module-specific Application Programming Interface (API) for vehicle service 220 via which VHAL proxy 250 may communicate with the engine control module for vehicle service 220. Alternatively, vehicle service 220 may establish a dedicated network address 217 via which VHAL proxy 250 may communicate with the engine control module forthat vehicle service 220. In yet other examples, vehicle sendee 220 responsible for ignition timing and air-fuel mixtures, following the preceding example, may operate via a Software Defined Vehicle model and operate utilizing a standardized interface which is reachable by VHAL proxy 250 utilizing a unique address specified by mapping 240 to network address 2.17 for the particular vehicle service 220. In such a way, VHAL proxy 250 may operate as an abstraction layer which is not dependent upon any particular network communication protocol and operates agnostic to ECU and / or SDV model implementations for vehicle 200. Such abstraction capabilities of VHAL proxy 250 may prove especially beneficial for vehicles 2.00 which concurrently operate both ECU and SDV models for available vehicle sendees 220.
[0052] Vehicle sendees 220 may be reachable over exclusive in-vehicle networks 215 and / or using shared in-vehicle networks 215. In the example of Fig. 2, vehicle sendee 220A is reachable over in-vehicle network 2.15A which is exclusive to vehicle sendee 220 and not shared with any other vehicle service 220B, 22C, 220N. Other vehicle services may utilize a shared in-vehicle network 215. For instance, each of vehicle services 220B, 220C, and 220N may be reachable over in-vehicle network 215B which is shared amongst vehicle services 220B, 220C, and 220N and potentially other components of vehicle 200. For instance, VHAL proxy 250 may communicate with database system 210 and / or infotainment system 230 using in-vehicle network 215B which is amongst vehicle services 220B, 220C, and 220N . In other examples, VHAL proxy 250 communicates with database system 210 and / or infotainment system 230 using distinct in-vehicle networks 215 which are not utilized by any of vehicle services 220A, 220B, 220C, 220N.
[0053] In the example of FIG. 2, new value 232 is depicted as available within vehicle property 2.16N and associated with vehicle service 2.20N and network address 217N according to mapping 240. For instance, mapping 240 may correspond to a tuple within a relational type database system 210. A tuple, also known as a record or row', is a basic unit of data in a relational database management system (DBMS). In such an example, mapping 240 may represent a single instance of a relation (e.g., vehicle property 216 A, vehicle service 220A, and network address 217A) within database 210, forming a tuple within database system 210. In examples where multiple in-vehicle networks 215 are present within vehicle 200, mapping 240 may further specify which one of multiple in-vehicle networks 215 is associated with network address 217A. In other examples, network address 217 may specify which one of multiple in-vehicle networks 215 as part of a network path to form a unique and fully resolvable network address 217 as part of mapping 240.
[0054] In some examples, network address 217 as specified by vehicle property 216 is a single value uniquely mapping vehicle sendee 220 with vehicle property 216 using an address. In other implementations, such as where vehicle 200 has multiple distinct in-vehicle networks (e.g., to support legacy systems and services and / or to support concurrent implementation of both ECU and SDV type vehicle service 220 modules), network address 217 may provide a unique link to each vehicle sendee 220 by specifying both a communication path (e.g., which among several in-vehicle networks to utilize when communicating with vehicle service 220) as well as a specific node address or a uniquely addressable network node and / or network location via which VHAL proxy 250 may communicate and / or interact with vehicle service 220 specified via mapping 240.
[0055] In some examples, new value 232 replaces, updates, and / or supersedes new value 232 previously utilized for vehicle property 220 or supersedes a default value for vehicle property 220. For instance, in response to receipt of new value 232 for one of vehicle properties 216 from one of vehicle services 220, VFIAL proxy 250 using processing circuitry' 299 mayupdate new value 232 previously received with new value 232 subsequently received for one of vehicle properties 216 in database system 210. In such an example, VHAL proxy 250 sends new value 232 to at least one of an original equipment manufacturer installed software application, a software application configured as a vehicle widget, a customer installed software application, and / or a mobile device communicabiy interfaced with vehicle 200 through a communications bridge application.
[0056] Processing circuitry- 299 of vehicle 2.00 may- execute software applications 291 at infotainment system 230 and VHAL proxy 250 may receive input, such as new value, from software applications 291 executing at infotainment system 230. According to at least one example, processing circuitry 299 executes at infotainment system 230 of vehicle 200 an original equipment manufacturer installed software application 291. In another example, processing circuitry 299 executes a vehicle widget type software application 291 at infotainment system 230. For instance, a vehicle widget is a software application 291 but may be considered a widget based on the software application 291 being a highly simplified and thus easy to use software application without any user configuration options. In another example, processing circuitry 299 executes a customer installed software application 291 at infotainment system 230. For instance, as opposed to a software application 291 provided by a vehicle manufacturer, customer installed software application 291 may be a software application 291 downloaded and installed to infotainment system 230 at the direction of an occupant of vehicle 200. In yet another example, processing circuitry- 299 may execute at infotainment system 230 a communications bridge type software application 2.91 for communicating between infotainment system 230 of vehicle 200 and a mobile device communicabiy interfaced with vehicle 200. For instance, such a mobile device may be communicabiy linked with infotainment system 230 using BLUETOOTH or a USB connection.
[0057] According to such examples having software applications 291 of varying permissible types executing at infotainment system 230, at least one example includes receiving input specifying new value 232 for one of vehicle properties 216 from one of software applications 291 executing at infotainment system 230. For instance, VFIAL proxy 250 may receive new value 232 from an original equipment manufacturer type software application 291 executingat infotainment system 230. VHAL proxy 250 may receive new value 232 from a vehicle widget type software application 291 executing at infotainment system 230. VHAL proxy- 250 may receive new value 232 from a customer installed type software application 291 executing at infotainment system 230. And in at least one example, VHAL proxy 250 mayreceive new' value 232 from a mobile device communicably interfaced with vehicle 200 through a communications bridge type software application 2.91 executing at infotainment system 230.
[0058] In related examples, VHAL proxy 250 may send new value 232 to a. variety of software applications 291 types executing at infotainment system 230, regardless of where new value 232 originates. For instance, new value 232 may originate from one of vehicle services 220 and be sent to one of software applications 291 or new value 232 may originate from one of software applications 291 and be sent by VHAL proxy 250 to a different one of software applications 291.
[0059] Consider for example, VHAL proxy 2.50 receiving new value 232 into vehicle property 216N specifying “current speed” tor vehicle 200 as determined and / or reported by vehicle sen-ice 220 responsible for sensing and reporting vehicle speed. The current speed information (e.g., new value 2.32) may therefore be received into vehicle property 216N and responsively communicated to a navigational type software application 2.91 executing at infotainment system 230 which may then, by way of example, output the current speed to a display via the navigational type software application 2.91, entirely separate and independent of a current speed readout, (e.g., a speedometer) configured and provided by the original equipment manufacturer, presumably within a dashboard of vehicle 200. In such a way, new value 232 need not originate with any permissible software application 291 executing at infotainment sy stem 230 of vehicle 2.00, yet, may nevertheless be requested, referenced, consumed, and / or otherw ise utilized by software application 291 executing at infotainment system 230 of vehicle 200.
[0060] FIG. 3 illustrates another example of a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle sen ices, in accordance with one or more techniques of this disclosure. In the example of FIG. 3, vehicle hardware abstraction layer proxy 350 (VHAL proxy 350) is configured to manage vehicle properties 316A, 316B, 316C, 316N (collectively 316) and vehicle services 320A, 32.0B, 320C, 320N (collectively 320) of vehicle 300 using database system 310. Database system 310 and processing circuitry 399 are interconnected with VHAL proxy 350. VHAL proxy 350 may communicate with vehicle services 320 over in-vehicle network 315 using network addresses 317A, 317B,317C, 317N (collectively 317) tor each of the respective vehicle services 320 according to mappings 340 managed by database system 310.
[0061] In the example of FIG. 3, there are unique network addresses 317A, 317B, 317C, and 317N corresponding to each of vehicle services 320A, 320B, 320C, and 320N, respectively. Each vehicle service 320 may be comrnumcably interfaced with VHAL proxy 350. Mapping 340 associates network addresses 317 with vehicle services 320 via database system 310. For instance, each vehicle service 320 may be uniquely associated with a corresponding network address 317. Vehicle properties 316 may similarly be associated with vehicle services 320 via mapping 340.
[0062] VHAL proxy 350 may receive as input 331 vehicle service configuration 334. VHAL proxy 350 may update database 310 based on vehicle sendee configuration 334 received. For instance, VHAL proxy may receive vehicle service configuration 334 specifying new vehicle property 316 for new original equipment manufacturer vehicle service 320 and new network address 317 unique to new original equipment manufacturer vehicle sen ice 320. Consider for example, a newly configured VHAL proxy 350. Providing vehicle sendee configuration 334 as input 331 to VHAL proxy 350 may be used to initially configure, initialize, and / or otherwise provision VHAL proxy 350. According to such an example, VHAL proxy 350 may update mapping 340 with new original equipment manufacturer vehicle service 320 and new network address 317 unique to new original equipment manufacturer vehicle service 320 specified by vehicle service configuration 334. In at least one example, VHAL proxy 350 may update mapping 340 to associate new value 332 with new original equipment manufacturer vehicle sendee 320 by at least writing new value 332 into new' vehicle property 316 in database system 310 associated with new original equipment manufacturer vehicle service 320. Input 331 providing vehicle service configuration 334 may originate from OEM manufacturer 395 or from some other source responsible for initially provisioning VHAL proxy 350 to communicate w'ith various vehicle sendees 320 within vehicle 300.
[0063] Consider for example, VHAL proxy 350 receiving input 331 defining vehicle service configurations 334 for at least a portion of vehicle services 320 from an OEM manufacturer 395. In a particular example, processing circuitry 399 stores, using database system 310, vehicle sendee configuration 334 defined by OEM 395 received via input 331. Stated differently, VHAL proxy 350 may receive input from OEM 395 and store vehicle service configuration 334 received w'ith input 331 into database system 310. In such a way, input 331 from OEM 395 or from some other source, may specify vehicle service configuration 334 details which may include, by way of example, a specified vehicle service 320A and aspecified network address 317A for vehicle service 320A. Vehicle service configuration 334 may optionally provide one or more default vehicle properties 316 for vehicle service 320A as well as access permissions and restrictions. For instance, an ECU responsible for engine fuel pressure may be permitted to communicate with and alter gear selection by a Transmission Control Module (TCM) responsible for managing the gear selection of a transmission within vehicle 300, but a SDV module responsible for controlling the radio station selection, volume playback, and equalizer configuration of vehicle 300 may not be allocated access permissions by the OEM provided vehicle sendee configuration 334 to alter the same gear selection of the transmission. In such a way, an automobile manufacturer may specify various controls, permissions, and parameters for the functioning of vehicle 300 in question, through the use of VHAL proxy 350,
[0064] FIG. 4 illustrates an example vehicle having various types of in-vehicle networks communicably interfaced with a VHAL proxy, in accordance with one or more techniques of this disclosure. In the example of FIG. 4, VHAL proxy 450 is communicably interfaced with multiple types of in-vehicle networks 415.
[0065] Various types of in-vehicle networks 415 are used throughout the automotive industry, including but not limited to a Controller Area Network (CAN) 462A, Media Oriented Systems Transport (MOST) 462B, Local Interconnect Network (LIN) 462C, Flexray Automotive Communication Bus (FACB) 462D, Automotive Ethernet 462E, Onboard Automotive LTE 462F, vehicle based WI-FI 462G, and vehicle based BLUETOOTH 4621 1, all of which are capable of interconnecting vehicle sendees 420 and facilitating the communication of vehicle properties 416 between VHAL proxy 450 and the variously connected vehicle sendees 420. Some network addresses 417 are configured to communicate outside of a vehicle to remote services, such as payment devices for toll roads, satellite-based radio sendees, and cloud sendees for vehicles 400.
[0066] VHAL proxy 450 may send new values 432 received to a variety of destinations using one or more of in-vehicle networks 415 described above. For instance, m response to receiving new value 432 for one of vehicle properties 416, VHAL proxy 450 may send new value 432 to Engine Control Unit (ECU) 463A of vehicle 400 managing at least one of vehicle sendees 420. In another example, VHAL proxy 450 may send new' value 432 to Software Defined Vehicle (SDV) module 463B of vehicle 400 managing at least one of vehicle sendees 420. VHAL, proxy 450 may send new' value 432 to Controller Area Network (CAN) 462A of vehicle 400 communicably interfaced to at least one of vehicle sendees 420. VHAL proxy 450 may send new value 432 to Anti-lock Braking System (ABS) module 463Cof vehicle 400 managing at least one of vehicle sendees 420. VHAL proxy 450 may send new value 432 to Transmission Control Unit (TCU) module 463D of vehicle 400 managing at least one of vehicle sendees 42.0. VHAL proxy 450 may send new value 432 to Body Control Module (BCM) 463E of vehicle 400 managing at least one of vehicle services 420. VHAL proxy 450 may send new' value 432 to Connected and Autonomous Electric Vehicle (CAEV) module 463F of vehicle 400 managing at least one of vehicle services 420.
[0067] In some examples, each of the respective modules (ECU 463 A, SDV module 463B, ABS module 463C, TCU module 463D, BCM 463E, and CAEV module 463F) are each individually responsible for managing access permissions of any external network, module, software application, and / or VHAL proxy 450 seeking to interact with each of the respective modules. In other examples, VHAL proxy 450 may perform optional validation of access permissions to write new value 432 into database system 410.
[0068] In some examples, VHAL proxy 450 may exchange bidirectional information with various vehicle services. For instance, VHAL proxy 450 may receive new value 432 from vehicle services 420 and return a subsequently received new value 432 back to the same vehicle service 420. In other instances, VHAL proxy 450 sends a received new value 432 from one of vehicle services 420 to a different one of vehicle services. For instance. according to certain examples, VHAL proxy 450 receives new value 432 for one of vehicle properties 416 from one of vehicle sendees 420 responsible for Heating, Ventilation, and Air Conditioning (HVAC) system 464A operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for Pedestrian Protection Unit (PPU) 464B system operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for Airbag Management System (AMS) 464C operations. VHAL proxy 450 may receive new v alite 432 for one of vehicle properties 416 from one of vehicle sendees 420 responsible for navigation head unit (NAV) 464D system operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for rain sensor (RAIN) 464E system operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for power window controller (WINDOW) 464F system operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for door lock controller (DOOR. LOCK) 464G system operations. VHAL. proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle sendees 420 responsible for automatic engine start system (REMOTE START) 464H operations. VHAL proxy 450may receive new value 432 for one of vehicle properties 416 from one of vehicle services 420 responsible for radar system (RADAR) 4641 operations. VHAL proxy 450 may receive new value 432 for one of vehicle properties 416 from one of vehicle sendees 420 responsible for vehicle dashboard system (DASH) 464J operations. In some examples, VHAL proxy 450 receives new value 432 from one of vehicle services 420 and responsively sends new value432 received to a different one of vehicle services 420.
[0069] FIG. 5 is a block diagram illustrating further details of one example of a VHAL proxy executing via processing circuitry, such as the VHAL proxy shown in each of FIG S. 1-4 in accordance with techniques of this disclosure. FIG. 5 illustrates only one particular example of vehicle computing device 500 which implements VHAL proxy 550. Many other example embodiments of vehicle computing device 500 may be used in other instances and different computing architectures may be used for implementing VHAL proxy 550 different than what is shown in the example of FIG. 5.
[0070] As shown in the specific example of FIG. 5, vehicle computing device 500 may include one or more processors 505, memory' 504, in vehicle networks 506, one or more storage devices 508, user interface 580, power source 512, vehicle service 520A (shown as an ECU type), and vehicle service 520B (shown as an SDV type). Additionally depicted by in- vehicle networks 506 is the presence of one or more network addresses 517 via which VHAL proxy 550 may communicate with vehicle services 520A and 520B (collectively 520).
[0071] Vehicle computing device 500 may also include operating system 514, infotainment system 530, and database system 510. Vehicle computing device 500, in one example, may further include one or more applications, such as VHAL proxy 550. Vehicle computing device 500, in one example, includes infotainment system 530. Infotainment system 530 may optionally execute via operating system 514 in some examples. In other examples, database system 510 optionally executes within operating system 514. In the specific example of vehicle computing device 500 depicted here, processing circuitry' (e.g., processors 502 and memory 504) execute infotainment system 530 separately from operating system 514. In the example of FIG. 5, infotainment system 530 includes other applications, including OEM application 531 and third-party application 532. In other examples, OEM application 531 and third-party application 532 may execute via operating system 514 or processing circuitry (e.g., processors 502 and memory 504) may execute OEM application 531 and third-party application 532 separately from infotainment system 530. Components of vehicle computing device 500 may be interconnected (physically, communicatively, and / or operatively) for inter-component communications, such as communicating updated values for vehicleproperties between vehicle services 520 and infotainment system 530 and / or applications executing via infotainment system 530, such as OEM application 531 and third-party application 532.
[0072] In some examples, processing circuitry' including one or more processors 505, implements functionality and / or process instructions for execution within vehicle computing device 500. For example, one or more processors 505 may be capable of processing instructions stored in memory' 504 and / or instructions stored on one or more storage devices 508.[00731 Memory 504, in one example, may store information within vehicle computing device 500 during operation. Memory 504, in some examples, may represent a computer-readable storage medium. In some examples, memory’ 504 may be a temporary-’ memory, meaning that a primary'’ purpose of memory 504 may not be long-term storage. Memory 504, in some examples, may be described as a volatile memory, meaning that memory 504 may not maintain stored contents when vehicle computing device 500 is turned off. Examples of volatile memories may include random access memories (RAM), dynamic random-access memories (DRAM), static random -access memories (SRAM), and other forms of volatile memories. In some examples, memory 504 may be used to store program instructions for execution by one or more processors 505. Memory 504, in one example, may be used by software or applications running on vehicle computing device 500 (e.g., one or more applications 516) to temporarily store data and / or instructions during program execution.
[0074] One or more storage devices 508, in some examples, may also include one or more computer-readable storage media. One or more storage devices 508 may be configured to store larger amounts of information than memory 504. One or more storage devices 508 may further be configured for long-term storage of information. In some examples, one or more storage devices 508 may include non-volatile storage elements. Examples of such nonvolatile storage elements may include magnetic hard disks, optical discs, floppy disks. Flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories.
[0075] Vehicle computing device 500, in some examples, may also include a network interface 506. Vehicle computing device 500, in such examples, may use network interface 506 to communicate with external devices via one or more networks, such as one or more wired or wireless networks. Network interface 506 may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, a cellular transceiver or cellular radio, or any other type of device that can send and receive information. Otherexamples of such network interfaces may include BLUETOOTH®, 3G, 5G, 5G, LTE, and WI-FI1® radios in mobile vehicle computing devices as well as USB. In some examples, vehicle computing device 500 may use in-vehicle network(s) 506 to wirelessly communicate with an external device such as a server, mobile phone, or other networked vehicle computing device. For instance, an in-vehicle WI-FI type in-vehicle network 506 may be utilized to communicate with a nearby smartphone or tablet. A satellite receiver of in-vehicle network 506 may be utilized to receive a satellite-based radio broadcast (e.g., SIRIUSXM® based audio content broadcasts). And a cellular type in-vehicle network 506 may be utilized to communicate with cloud-based sendees via a public Internet accessible using the cellular type in-vehicle network 506.
[0076] Vehicle computing device 500 may also include user interface 580. User interface 580 may include one or more input devices 581, such as touch-sensitive display 106, including a touch-sensitive display utilized to provide display output by infotainment system 530. Input device 581, in some examples, may be configured to receive input from a user through tactile, electromagnetic, audio, and / or video feedback. Examples of input device 581 may include a touch-sensitive display, mouse, keyboard, voice responsive system, video camera, microphone or any other type of device for detecting gestures by a user. In some examples, a touch-sensitive display may include a presence-sensitive screen.
[0077] User interface 580 may also include one or more output devices. One or more output devices, in some examples, may be configured to provide output to a user using tactile, audio, or video stimuli. One or more output devices, in one example, may include a display, sound card, a video graphics adapter card, or any other type of device tor converting a signal into an appropriate form understandable to humans or machines. Additional examples of one or more output devices may include a speaker, a view monitor, a liquid cry stal display (LCD), or any other type of device that can generate intelligible output to a user. Some output devices within a vehicle may produce analog output or digital to analog output, or digitized output that mimics an analog output display, such as a speedometer indicator that sweeps across a dial rather than displaying a numeric value as digital output. Other examples include a fuel gauge and / or a temperature gauge which may ou tput display information in an analog format regardless of originating from an analog or digitized source.
[0078] Vehicle computing device 500, in some examples, may include power source 512, which may be rechargeable and provide power to vehicle computing device 500. Power source 512, in some examples, may be a battery made from nickel-cadmium, lithium-ion, or oilier suitable material. Vehicle computing device 500 may be powered by a battery of aninternal combustion engine (ICE) vehicle, by a battery of a hybrid vehicle, and / or from a battery of an all-electric vehicle.
[0079] Examples of vehicle computing device 500 may include operating system 514. Operating system 514 may be stored in one or more storage devices 508 and may control the operation of components of vehicle computing device 500. For example, operating system 514 may facilitate the interaction of one or more applications, such as OEM application 531 and / or third-party application 532 with hardware components of vehicle computing device 500. As shown in FIG. 5, one or more applications, including OEM application 531 and / or third-party application 532, may be stored in one or more storage devices 508. VHAL proxy 550 may be stored within storage device 508 and may include instructions that cause VHAL proxy 550, infotainment system 530, OEM application 531 and / or third -party application 532 executing on vehicle computing device 500 to perform one or more of the operations and actions described in FIGS. 1-4.
[0080] Any applications, e.g., VHAL, proxy 550, operating system 514, infotainment system 530, OEM application 531 and / or third-party application 532, implemented within or executed by vehicle computing device 500 may be implemented or contained within, operable by, executed by, and / or be operatively / communicatively coupled to components of vehicle computing device 500, e.g., one or more processors 505, memory 504, in-vehicle networks 506, one or more storage devices 508, user interface 580, and vehicle services 520.
[0081] In one specific examples implementation of FIG. 5, vehicle computing device 500 implements a computing system within a vehicle having therein processing circuitry (e.g., processor(s) 502), database system 510, in-vehicle network 506, and memory 504 having instructions stored thereupon that, when executed, the instructions configure the processing circuitry (e.g., processor(s) 502) of vehicle computing device 500 to perform operations. In such an example, the instructions may configure processing circuitry to map, using database system 510, each of the vehicle properties to one of vehicle services 520 using network address 517 unique to one of vehicle services 520. In such an example, responsive to receipt of input from vehicle computing device 500 specifying a new value for one of the vehicle properties, the instructions may configure processing circuitry to update, based on the new' value, one of the vehicle properties by at least writing the new value into database system 510. Continuing with this example, the instructions may configure processing circuitry to communicate, using in-vehicle network 506, the new value to one of vehicle services 520 mapped to one of the vehicle properties using network address 517 as stored within database system 510.
[0082] FIG. 6 is a flow chart illustrating an example mode of operation for processing circuitry to implement a cohesive framework for software defined vehicle 100 and infotainment unit integration and communication, in accordance with techniques of this disclosure. Tire mode of operation is described with respect to VITAL proxy 150 of FIGS. 1-4 and with respect to vehicle computing device 500 of FIG. 5.
[0083] In the example of FIG. 6, the mode of operation includes managing database system 1 10 of vehicle properties 116 and vehicle services 120 (605), For instance, processing circuitry 199 may execute vehicle hardware abstraction layer proxy (VITAL proxy 150) that manages database system 1 10 of vehicle properties 116 and vehicle services 120. The example mode of operation generates mapping 140 of vehicle properties 116 to network address 117 (610). For example, processing circuitry’ 199 may’ generate mapping 140 from each of vehicle properties 1 16 to network address 117 unique to one of vehicle services 120. "Die example mode of operation receives input specifying new value 132 (615). For instance, according to such an example, in response to receipt of input specifying new value 132 for one of vehicle properties 116, processing circuitry' 199 may update mapping 140 with new value 132 for one of vehicle properties 116 by at least writing new value 132 into one of vehicle properties 116 in database system 110. The mode of operation updates mapping 140 with new value 132 for vehicle property’ 116 in database system 110 (62.0). For instance, according to such an example, processing circuitry- 199 may update mapping 140 with new value 132 for one of vehicle properties 116 by at least writing new value 132 into one of vehicle properties 116 in database system 110. The mode of operation transmits new value 132 over an in-vehicle network 1 15 using network address 117 (625). For instance, processing circuitry 199 may transmit new value 132 over an in-vehicle network 1 15 of vehicle 100 to network address 117 unique to one of vehicle services 120 corresponding to one of vehicle properties 116 based on mapping 140.
[0084] In some examples, the mode of operation, in response to receiving request 233 for one of vehicle properties 116, retrieves new value 132 written into one of vehicle properties 116 in database system 110. In such an example, the mode of operation further includes returning new value 132 to one of vehicle services 120 corresponding to one of vehicle properties 116 based on mapping 140.
[0085] According to another example, responsive to writing new value 132 into one of vehicle properties 1 16 in database system 110, the mode of operation includes pushing new value 132 to one of vehicle services 120 corresponding to one of vehicle properties 116 based on mapping 140. According to another example, responsive to writing new' value 132 intoone of vehicle properties 116 in database system 110, the mode of operation includes listening for request 233 from one of vehicle services 120 corresponding to one of vehicle properties 1 16 based on mapping 140 and responsively returning new value 132 responsive to request 233. According to another example, responsive to writing new value 132 into one of vehicle properties 1 16 in database system 110, the mode of operation includes broadcasting new value 132 to multiple of vehicle services 120 sharing in-vehicle network 115 specify ing network address 117 unique to one of vehicle services 120 based on mapping 140.
[0086] According to another example the mode of operation includes monitoring for changes to vehicle properties 116 associated with vehicle services 120 within database system 110. In such an example the mode of operation may, responsive to determining one of vehicle properties 1 16 is updated with new value 132 within database system 110, push new value 132 to one of vehicle services 120 corresponding to one of vehicle properties 116 based on mapping 140. In another example, the mode of operation may, responsive to determining one of vehicle properties 116 is updated with new value 132 within database system 110, broadcast new value 132 to multiple of vehicle services 120 sharing in-vehicle network 115 specifying network address 117 unique to one of vehicle services 120 based on mapping 140.
[0087] According to at least one example of the mode of operation, in-vehicle network 115 of vehicle 100 includes a Vehicular Ad-hoc Network. In other examples, in-vehicle network 115 of vehicle 100 includes a Vehicle-to-Everything communications network. In-vehicle network 115 of vehicle 100 may include a controller area network bus communicably interfaced with one or more Engine Control Units within vehicle 100. In-vehicle network 115 of vehicle 100 may include an in-vehicle Ethernet network.
[0088] According to at least one example mode of operation, processing circuitry 199 may receive vehicle service configuration 334 specifying new vehicle property 316 for new original equipment manufacturer vehicle service 320 and new network address 117 unique to new' original equipment manufacturer vehicle service 320. According to such an example, the mode of operation includes updating mapping 140 with new original equipment manufacturer vehicle sendee 320 and new network address 317 unique to new original equipment manufacturer vehicle service 320 specified by vehicle service configuration 334. According to another example, the mode of operation may include updating mapping 140 to associate new value 132 with new original equipment manufacturer vehicle service 320 by at least writing new value 132 into the new vehicle property' 320 in database system 1 10 associated with nerv original equipment manufacturer vehicle service 320.
[0089] In other examples the mode of operation includes receiving vehicle service configuration 334 specifying network address 117 unique to one of vehicle services 120 corresponding to an exclusive in-vehicle network 1 15 selected from among multiple in- vehicle networks 1 15 within vehicle 100. In at least one example, the mode of operation includes receiving vehicle service configuration 334 specifying shared in-vehicle network 115 for one of vehicle services 120 and network address 117 unique to one of vehicle services 120 including both shared in-vehicle network 115 and a network node on shared in- vehicle network 115 corresponding to one of vehicle sendees 120. In such an example, the mode of operation includes updating mapping 140 in database system 110 with vehicle service configuration 334 received for one of vehicle services 120.
[0090] In some examples, the mode of operation includes executing an infotainment system of vehicle 100, at least one of: an original equipment manufacturer installed software application, a vehicle widget, a customer installed software application, and a communications bridge application for communicating between infotainment system of vehicle 100 and a mobile device communicably interfaced with vehicle 100. In such an example, the mode of operation may further include receiving input 131 specifying new' value 132 for one of vehicle properties 116 from one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with vehicle 100 through the communications bridge application.
[0091] According to at least some examples, responsive to receiving new value 132. for one of vehicle properties 116, the mode of operation may include sending new value 132 to at least one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with vehicle 100 through the communications bridge application.
[0092] According to some examples, responsive to receiving new' value 132 for one of vehicle properties 116, the mode of operation may send new value 132 to at least one of: an Engine Control Unit of vehicle 100 managing at least one of vehicle services 120; a Software Defined Vehicle module of vehicle 100 managing at least one of vehicle sendees 120; a Controller Area Network of vehicle 100 communicably interfaced to at least one of vehicle services 120; In-vehicle network 115 of vehicle 100 communicably interfaced to at least one of vehi cle services 120; an Anti-lock Braking System module of vehicle 100 managing at least one of vehicle sendees 120; a Transmission Control Unit module of vehicle 100 managing at least one of vehicle services 120; a Body Control Module of vehicle 100managing at least one of vehicle sendees 120; and a Connected and Autonomous Electric Vehicle module of vehicle 100 managing at least one of vehicle services 120.
[0093] The mode of operation may include receiving new value 132 for one of vehicle properties 1 16 from one of vehicle services 120 selected from the group including: a Heating, Ventilation, and Air Conditioning system; a Pedestrian Protecting Unit system; an airbag management system; a navigation head unit system; a rain sensor system; a power window controller system ; a door lock controller system; an automatic engine start system; a radar system; and a vehicle dashboard system.[00941 In some examples, of the mode of operation, includes sending new value 132 for one of vehicle properties 116 to one or more of vehicle services 120 selected from the group including: the Heating, Ventilation, and Air Conditioning system; the Pedestrian Protecting Unit system; the airbag management system; the navigation head unit system; the rain sensor system; the power window controller system; the door lock controller system; the automatic engine start system; the radar system; and the vehicle dashboard system.
[0095] For processes, apparatuses, and other examples or illustrations described herein, including in any flowcharts or flow diagrams, certain operations, acts, steps, or events included in any of the techniques described herein can be performed in a different sequence, may be added, merged, or left out altogether (e.g., not all described acts or events are necessary for the practice of the techniques). Moreover, in certain examples, operations, acts, steps, or events may be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors, rather than sequentially. Certain operations, acts, steps, or events may be performed automatically even if not specifically identified as being performed automatically. Also, certain operations, acts, steps, or events described as being performed automatically may be alternatively not performed automatically, but rather, such operations, acts, steps, or events may be, in some examples, performed in response to input or another event.
[0096] lliis disclosure includes the following examples.
[0097] Example 1 : A method includes: executing, by processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services; generating, by the processing circuitry and using the database system, a mapping from each of the vehicle properties to a network address unique to one of the vehicle sendees; responsive to receiving input specifying a new value for one of the vehicle properties, updating, by the processing circuitry, the mapping with the new' value for die one of the vehicle properties by at least writing the new' value into the one of the vehicleproperties in the database system; and transmiting, over an in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping, the new value.
[0098] Example 2: Tire method of example 1, further including: responsive to receiving a request for the one of the vehicle properties, retrieving the new value written into the one of the vehicle properties m the database system; and returning the new value to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping.
[0099] Example 3: The method of example 1 or 2, further including: responsive to writing the new value into the one of the vehicle properties in the database system: pushing the new val ue to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping; listening for a request from the one of the vehicle sendees corresponding to the one of the vehicle properties based on the mapping and responsively- returning the new value responsive to the request.
[0100] Example 4: The method of any of examples 1-3, further including: responsive to writing the new value into the one of the vehicle properties in the database system: broadcasting the new value to multiple of the vehicle services sharing the in-vehicle network specifying the network address unique to the one of the vehicle services based on the mapping.
[0101] Example 5: The method of any of examples 1-4, further including: monitoring, by the processing circuitry of the vehicle, for changes to the vehicle properties associated with the vehicle sendees within the database system; and responsive to determining the one of the vehicle properties is updated wdth the new value within the database system: pushing the new value to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping.
[0102] Example 6: The method of any of examples 1-5, further including: monitoring, by the processing circuitry of the vehicle, for changes to the vehicle properties associated with the vehicle services within the database system; and responsive to determining the one of the vehicle properties is updated wdth the new value within the database system: broadcasting the new value to multiple of the vehicle services sharing the in-vehicle network specifying the network address unique to the one of the vehicle sendees based on the mapping.
[0103] Example 7: lire method of any of examples 1-6, wherein the in-vehicle network of the vehicle includes at least one of: a Vehicular Ad-hoc Network.
[0104] Example 8: The method of any of examples 1-7, wherein the in-vehicle network of the vehicle includes at least one of: a Vehicle-to-Everything communications network.
[0105] Example 9: The method of any of examples 1 -8, wherein the in-vehicle network of the vehicle includes at least one of: a controller area network bus communicably interfaced with one or more Engine Control Units within the vehicle.
[0106] Example 10: The method of any of examples 1-9, w'herein the in-vehicle network of tlie vehicle includes at least one of: an in-vehicle Ethernet network.
[0107] Example 11: The method of any of examples 1-10, further including: receiving, by the processing circuitry, a vehicle seiwice configuration specifying a new vehicle property for a new original equipment manufacturer vehicle service and a new network address unique to the new' original equipment manufacturer vehicle sendee; updating, by the processing circuitry, the mapping with tire new original equipment manufacturer vehicle service and the new network address unique to the new original equipment manufacturer vehicle service specified by the vehicle service configuration; and updating the mapping to associate the new value with the new original equipment manufacturer vehicle sendee by at least writing the new value into the new vehicle property in the database system associated with the new original equipment manufacturer vehicle service.
[0108] Example 12: The method of any of examples 1-11, further including receiving the vehicle service configuration specifying the network address unique to the one of the vehicle services corresponding to an exclusive in-vehicle network selected from among multiple in- vehicle networks within the vehicle.
[0109] Example 13: The method of any of examples 1-12, further including receiving the vehicle sendee configuration specifying a shared in-vehicle network for the one of the vehicle sendees and the network address unique to the one of the vehicle services including both the shared in-vehicle network and a network node on the shared in-vehicle network corresponding to the one of the vehicle services; and updating the mapping in the database system with the vehicle service configuration received for the one of the vehicle services.
[0001] 0] Example 14: The method of any of examples 1-13, further including: executing, by the processing circuitry at an infotainment system of the vehicle, at least one of: an original equipment manufacturer installed software application, a vehicle widget, a customer installed software application, and a communications bridge application for communicating between the infotainment system of the vehicle and a mobile device communicably interfaced with the vehicle; and receiving the input specifying the new value for the one of the vehicle properties from one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with the vehicle through the communications bridge application.
[0111] Example 15: The method of any of examples 1-14, further including : responsive to receiving the new value for the one of the vehicle properties, sending the new value to at least one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with the vehicle through the communications bridge application.
[0112] Example 16: The method of any of examples 1-15, further including: responsive to receiving the new value for the one of the vehicle properties, sending the new value to at least one of: an Engine Control Unit of the vehicle managing at least one of the vehicle services; a Software Defined Vehicle module of the vehicle managing at least one of the vehicle services; a Controller Area Network of the vehicle communicably interfaced to at least one of the vehicle sendees; an In-vehicle network of the vehicle communicably interfaced to at least one of the vehicle services; an Anti-lock Braking System module of the vehicle managing at least one of the vehicle services; a Transmission Control Unit module of the vehicle managing at least one of the vehicle services; a Body Control Module of the vehicle managing at least one of the vehicle services; and a Connected and Autonomous Electric Vehicle module of the vehicle managing at least one of the vehicle sendees.
[0113] Example 17: Tire method of any of examples 1-16, further including: receiving the new value for the one of the vehicle properties from one of the vehicle sendees selected from tlie group including: a Heating, Ventilation, and Air Conditioning system; a Pedestrian Protecting Unit system; an airbag management system; a navigation head unit system; a rain sensor system; a power window controller system; a door lock controller system; an automatic engine start system; a radar system; and a vehicle dashboard system; and sending the new' value for the one of the vehicle properties to one or more of the vehicle services selected from the group including: the Heating, Ventilation, and Air Conditioning system; the Pedestrian Protecting Unit system; the airbag management system; the navigation head unit system; the rain sensor system; the power window controller system; the door lock controller system; the automatic engine start system; the radar system; and tire vehicle dashboard system.
[0114] Example 18: A vehicle computing system including means tor performing any combination of the method of examples 1-17.
[0115] Example 19: A computer-readable storage medium encoded with instructions that, when executed by one or more processors of a vehicle computing system, cause the one or more processors to perform any combination of the methods of examples 1-17.
[0116] Example 20: A vehicle computing system including: processing circuitry'; a database system; an in-vehicle network; and memory having instructions stored thereupon that, when executed, the instructions configure the processing circuitry-' of the vehicle computing system to: execute, by processing circuitry' of a vehicle, a vehicle hardware abstraction layer proxy that manages the database system of vehicle properties and vehicle services; generate, by the processing circuitry and using the database system, a mapping from each of the vehicle properties to a network address on the in-vehicle network unique to one of the vehicle services; responsive to receip t of input specifying a new value for one of the vehicle properties, update, by the processing circuitry, the mapping with the new' value for the one of the vehicle properties by at least writing the new value into the one of the vehicle properties in the database system; and transmit, over the in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping, the new value.
[0117] Example 21 : A computer-readable storage media including instructions that, when executed, configure processing circuitry' of a vehicle computing system to: execute, by processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages the database system of vehicle properties and vehicle services; generate, by the processing circuitry' and using a database system, a mapping from each of the vehicle properties to a network address unique to one of the vehicle services; responsive to receipt of input specifying a new value for one of the vehicle properties, update, by the processing circuitry', the mapping with the new value for the one of the vehicle properties by at least writing the new value into the one of the vehicle properties in the database system; and transmit, over an in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping, the new value.
[0118] By wfay of example, and not limitation, such computer-readable storage media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave areincluded in the definition of medium. It should be understood, however, that computer- readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0119] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the terms “processor” or “processing circuitry’” as used herein may each refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described. In addition, in some examples, the functionality described may be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
Claims
WHAT IS CLAIMED IS:1 . A method comprising: executing, by processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services; generating, by the processing circuitry and using the database system, a mapping from each of the vehicle properties to a network address unique to one of the vehicle sendees; responsive to receiving input specifying a new value for one of the vehicle properties, updating, by the processing circuitry, the mapping with the new' value for the one of the vehicle properties by at least writing the new value into the one of the vehicle properties m the database system; and transmitting, over an in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping, the new value.The method of claim 1, further comprising: responsive to receiving a request for the one of the vehicle properties, retrieving the new value written into the one of the vehicle properties in the database system; and returning the new' value to the one of the vehicle services corresponding to the one of tire vehicle properties based on tire mapping.
3. The method of claim 1 or 2, further comprising: responsive to writing the new' value into the one of the vehicle properties in the database system: pushing the new value to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping; listening for a request from the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping and responsively returning the new' value responsive to the request; or broadcasting the new' value to multiple of the vehicle services sharing the in- vehicle network specifying the netw ork address unique to the one of the vehicle services based on the mapping.
4. The method of claims 1-3, further comprising: monitoring, by the processing circuitry of the vehicle, for changes to the vehicle properties associated with the vehicle services within the database system; and responsive to determining the one of the vehicle properties is updated with the new value within the database system: pushing the new value to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping; or broadcasting the new value to multiple of the vehicle services sharing the in- vehicle network specifying the network address unique to the one of the vehicle services based on the mapping.
5. The method of claims 1-4, wherein the in-vehicle network of the vehicle comprises at least one of: a Vehicular Ad-hoc Network; a Vehicle-to-Everything communications network; a controller area network bus communicably interfaced with one or more Engine Control Units within the vehicle; or an in-vehicle Ethernet network.
6. Hie method of claims 1-5, further comprising: receiving, by the processing circuitry, a vehicle sendee configuration specifying a new vehicle property for a new original equipment manufacturer vehicle sendee and a new network address unique to the new original equipment manufacturer vehicle service; updating, by the processing circuitry, the mapping with the new original equipment manufacturer vehicle sendee and the new network address unique to the new original equipment manufacturer vehicle sendee specified by the vehicle service configuration; and updating the mapping to associate the new value with the new original equipment manufacturer vehicle sendee by at least writing the new value into the new vehicle property in the database system associated with the new' original equipment manufacturer vehicle service.The method of claims 1-6, further comprising receiving the vehicle sendee configuration specifying one or more of: the network address unique to the one of the vehicle sendees corresponding to an exclusive in-vehicle network selected from among multiple in-vehicle networks within the vehicle; or a shared in-vehicle network for the one of the vehicle services and the network address unique to the one of the vehicle services including both the shared in-vehicle network and a network node on the shared in-vehicle network corresponding to the one of the vehicle sendees; and updating the mapping in the database system with tire vehicle service configuration received for the one of the vehicle services.
8. lire method of claims 1-7, further comprising: executing, by the processing circuitry at an infotainment system of the vehicle, at least one of: an original equipment manufacturer installed software application, a vehicle widget, a customer installed software application, and a communications bridge application for communicating between the infotainment system of the vehicle and a mobile device communicably interfaced with the vehicle; and receiving the input specifying the new value for the one of the vehicle properties from one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with the vehicle through the communications bridge application.9, The method of claims 1-8, further comprising: responsive to receiving the new value for the one of the vehicle properties, sending the new value to at least one of: the original equipment manufacturer installed software application, the vehicle widget, the customer installed software application, or the mobile device communicably interfaced with the vehicle through the communications bridge application.
10. The method of claims 1-9, further comprising: responsive to receiving the new value for the one of the vehicle properties, sending tlie new value to at least one of: an Engine Control Unit of the vehicle managing at least one of the vehicle services; a Software Defined Vehicle module of the vehicle managing at least one of the vehicle services; a Controller Area Network of the vehicle communicably interfaced to at least one of the vehicle sendees; an In-vehicle network of the vehicle communicably interfaced to at least one of the vehicle services; an Anti-lock Braking System module of the vehicle managing at least one of the vehicle services; a Transmission Control Unit module of the vehicle managing at least one of the vehicle services; a Body Control Module of the vehicle managing at least one of the vehicle services; and a Connected and Autonomous Electric Vehicle module of the vehicle managing at least one of the vehicle sendees.1 1 . The method of claims 1-10, further comprising: receiving the new' value for the one of the vehicle properties from one of the vehicle services selected from the group comprising: a Heating, Ventilation, and Air Conditioning system; a Pedestrian Protecting Unit system; an airbag management system; a navigation head unit system; a rain sensor system; a power window controller system; a door lock controller system; an automatic engine start system ; a radar system; and a vehicle dashboard sy stem; and sending the new value for the one of the vehicle properties to one or more of the vehicle sendees selected from the group comprising: the Heating, Ventilation, and Air Conditioning system; the Pedestrian Protecting Unit system; the airbag management system; the navigation head unit system; the rain sensor system; the power window controller system; the door lock controller system; the automatic engine start system; the radar system; and the vehicle dashboard system.
12. A vehicle computing system comprising means for performing any combination of the method of claims 1-11.
13. A computer-readable storage medium encoded with instructions that, when executed by one or more processors of a vehicle computing sy stem, cause the one or more processors to perform any combination of the methods of claims 1 -11.
14. A vehicle computing system comprising: processing circuitry; a database system; an in-vehicle network; and memory having instructions stored thereupon that, when executed, the instructions configure the processing circuitry of the vehicle computing system to: execute, by processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages the database system of vehicle properties and vehicle services; generate, by the processing circuitry and using the database system, a mapping from each of the vehicle properties to a network address on the in-vehicle network unique to one of the vehicle services; responsive to receipt of input specifying a new value for one of the vehicle properties, update, by the processing circuitry', the mapping with the new value for the one of the vehicle properties by at least writing the new' value into the one of the vehicle properties in the database system; and transmit, over the in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehi cle properties based on the mapping, the new value.
15. A computer-readable storage media comprising instructions that, when executed, configure processing circuitry of a vehicle computing system to: execute, by processing circuitry of a vehicle, a vehicle hardware abstraction layer proxy that manages a database system of vehicle properties and vehicle services; generate, by the processing circuitry and using a database system, a mapping from each of the vehicle properties to a network address unique to one of the vehicle sendees; responsive to receipt of input specifying a new value for one of the vehicle properties, update, by the processing circuitry, the mapping with the new value for the one of the vehicle properties by at least writing the new value into the one of the vehicle properties in the database system; and transmit, over an in-vehicle network of the vehicle to the network address unique to the one of the vehicle services corresponding to the one of the vehicle properties based on the mapping, the new value.
Citation Information
Patent Citations
Configurable speech interface for vehicle infotainment systems
US20180061410A1
Systems and methods for vehicle access and management
US20180091930A1
Vehicle data extraction service
WO2022164874A1