Advanced IT information
This section provides information to IT teams who are supporting Blank-it within their organization.
File system
Blank-it stores files in three main directories.
- The baseline configuration directory. This directory should be read-only. It stores some baseline configuration file that should never be able to be edited by unprivileged users.
- The shared data directory. Users should have read and write access. It stores several transient data files and configuration files.
- The logs directory. Users should have read and write access. It stores the application log files.
By default, these directories are as follows:
| Directory | Directory path | Permissions |
|---|---|---|
| Baseline configuration | C:\ProgramData\Blank-it | Read-only |
| Shared data | C:\Users\Public\Documents\Blank-it\Data | Read + Write |
| Logs | C:\Users\Public\Documents\Blank-it\Logs | Read + Write |
Firewall configuration
The Blank-it software will occasionally make web requests to the Blank-it servers. It is recommended that an organization allows the following traffic through its firewall:
| Hostname | Port | Comments |
|---|---|---|
gateway.blank-it.com | 443 | Required for licensing/analytics/configuration on modern versions of Blank-it. |
licensing.blank-it.com | 443 | Required for online license activation. |
analytics.blank-it.com | 443 | Required to collect analytics data (sensor data, GPS data, screen events, etc.) |
portal.blank-it.com | 443 | Required to allow administrators to use the built-in configuration manager. |
Distributing a configuration to a fleet of PCs
In order to accommodate the widest variety of organizational software deployment tools, Blank-it uses the simplest possible configuration deployment strategy. To roll out a new Blank-it configuration, all an organization has to do is overwrite the existing Blank-it configuration file with a new Blank-it configuration file. This can be done while the Blank-it software is running; Blank-it will continue to run as it was, the new configuration will be applied next time the Blank-it software starts.
Advanced installation options
Blank-it has a number of advanced installation options that can be used by passing custom arguments to msiexec during the installation process.
| Argument | Description |
|---|---|
| BASE_DIR | The path to use as the baseline configuration directory (described above). |
| SHARED_DIR | The path to use as the shared configuration directory (described above). |
| LOGS_DIR | The path to use as the logs directory (described above). |
| CONFIG_PATH | The path of a config file to be automatically deployed to the relevant locations. |
| KEEP_LOGS | (Uninstall only) If set to true, retain the log files when uninstalling. |
In addition, Blank-it can be installed in 'quiet' mode by passing the /qn flag to msiexec.
Here is an example installation command that will install Blank-it in quiet mode, with a custom directory structure, and automatic deployment of a configuration file:
msiexec.exe /i blankit.msi /qn BASE_DIR="C:\BL_BASE" SHARED_DIR="C:\BL_SHARED" LOGS_DIR="C:\BL_LOGS" CONFIG_PATH="config.dat"Here is an example uninstallation command that will uninstall Blank-it in quiet mode, but retain the log files.
msiexec.exe /x blankit.msi /qn KEEP_LOGS=TRUEMicrosoft WebBrowser
The Blank-it Browser hosts Microsoft's SHDOCVW.DLL WebBrowser control (used in Internet Explorer).
If your organization does not wish to use the Microsoft browser technology, we advise against using the Blank-it Browser.
Custom algorithms
Blank-it supports custom algorithms, allowing IT administrators to customize how Blank-it will blank the screen in response to input from the BL-146, BL-149, and BL-205 devices. These algorithms are built in to the configuration file, and executed by the Blank-it software. Custom algorithms can contain arbitrary code.
Programming language
Custom algorithms are written in the C# programming language (opens in a new tab)
Algorithm structure
The basic structure of a custom algorithm is as follows:
class CustomAlgorithm : Algorithm
{
public override string Id { get { return "[GUID]"; } }
public override void HandlePayloadV1(PayloadV1 payload)
{
// Logic for handling the V1 payload goes here.
}
public override void HandlePayloadV2(PayloadV2 payload)
{
// Logic for handling the V2 payload goes here.
}
}To update the motion state of the vehicle, the algorithm just has to update its MotionState property to one of the following values:
MotionState.Unknown(flags the vehicle as being in an unknown state)MotionState.Moving(flags the vehicle as moving)MotionState.Stationary(flags the vehicle as stationary)
Whenever a new V1 payload is received, it is passed into the HandlePayloadV1 method.
The method can choose to update the MotionState property if it so desires.
Whenever a new V2 payload is received, it is passed into the HandlePayloadV2 method.
The method can choose to update the MotionState property if it so desires.
The Id property must always return the string [GUID]. This is transformed upon compilation, and if it is changed the custom algorithm will not be correctly loaded by Blank-it.
Device payloads
The algorithm can handle V1 payloads (for BL-146, BL-149, and BL-205) and V2 payloads (for BL-205 only).
PayloadV1 has the following properties:
InstantaneousValue(the instantaneous value of the RMS average of the 3-axis acceleration data)AverageValue(the n-second moving average of the RMS average of the 3-axist acceleration data, with the value of n set in the sensor's firmware)
PayloadV2 has the following properties:
Motion4(the 4-second RMS 3-axis motion value (cm/sec))Motion10(the 10-second RMS 3-axis motion value (cm/sec))Vibration4(the 4-second RMS 3-axis vibration value (mg))Vibration10(the 10-second RMS 3-axis vibration value (mg))Shock10(the 10-second 3-axis peak shock value (mg))Rotation20(the 20-second RMS 3-axis rotation value (degrees x 10))Angle(the vertical angle (degrees x 10), with the origin set when the sensor powers on)AccelerationX(the x-axis acceleration (mg))AccelerationY(the y-axis acceleration (mg))AccelerationZ(the z-axis acceleration (mg))RotationX(the x-axis rotation (degrees/sec x 10))RotationY(the y-axis rotation (degrees/sec x 10))RotationZ(the z-axis rotation (degrees/sec x 10))
A simple example
Here is an example of a simple custom algorithm that will flag the device as being in motion as soon as the V1 motion reading exceeds 50.
using System;
class SimpleAlgorithm : Algorithm
{
public override string Id { get { return "[GUID]"; } }
public override void HandlePayloadV1(PayloadV1 payload)
{
if (payload.AverageValue > 50)
{
MotionState = MotionState.Moving;
}
else
{
MotionState = MotionState.Stationary;
}
}
public override void HandlePayloadV2(PayloadV2 payload)
{
// Ignore the V2 payload.
}
}Additional information
Standard C# using statements (opens in a new tab) are required, except for the Blank-it namespaces which are automatically added.
The following assemblies are referenced by default:
- BlankIt.exe
- System.dll
- System.Core.dll
- System.Data.dll
- System.Data.DataSetExtensions.dll
- System.Xml.dll
- System.Xml.Linq.dll
Custom references can be added using Roslyn-style #r declarations (opens in a new tab).
For example: #r CustomAssembly.dll