Memory device and method of operation

EP4739209A1Pending Publication Date: 2026-05-13SPORTS & WELL BEING ANALYTICS LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
SPORTS & WELL BEING ANALYTICS LTD
Filing Date
2024-07-29
Publication Date
2026-05-13

AI Technical Summary

Technical Problem

Existing monitoring systems for head impacts in sports, such as mouthguards with sensors, face challenges in accuracy due to sensor placement variability and are often prohibited in professional sports. Additionally, they are limited by power and memory constraints, leading to incomplete data collection.

Method used

An intra-oral device equipped with an acceleration sensor, a high-latency memory, and processor resources that continuously record impact data by using a dual-memory system for efficient data storage and management, allowing for accurate and comprehensive data collection without the need for external power sources.

Benefits of technology

The device provides continuous and accurate recording of head impact data, overcoming the limitations of existing systems by improving data storage efficiency and reducing power consumption, thus enabling longer data collection sessions and more reliable impact monitoring.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure GB2024052001_13022025_PF_FP_ABST
    Figure GB2024052001_13022025_PF_FP_ABST
Patent Text Reader

Abstract

An intra-oral device for providing a stream of data representative of acceleration experienced by a wearer of the device. The device comprises: an acceleration sensor; a first memory; a second memory with a lower latency than the first memory; and one or more processor resource. The one or more processor resource is configured to: identify a start of a data record for data to be stored in a first memory; receive a data stream comprising one or more data values; and store the data stream values in a first buffer of a plurality of buffers in a second memory with a lower latency than the first memory as buffered values. Responsive to a determination that the first buffer is full, the processor resource is further configured to: store further data stream values in a second buffer of the plurality of buffers as buffered values; and transfer the buffered values from the first buffer to the data record in the first memory. The processor resource is further configured, responsive to a determination that the second buffer is full, to: store further data stream values in another buffer of the plurality of buffers as buffered values; and transfer the buffered values from the second buffer to the data record in the first memory.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Memory device and method of operation

[0002] Field

[0003] The present invention relates to a memory device, and a method of operation thereof, for an intra-oral assembly, for example a mouth-guard, for monitoring impacts to a wearer. In particular, but not exclusively, to an intra-oral assembly for wear by a participant in a contact sport.

[0004] Background

[0005] Participants in sports, particularly contact sports, such as, for example, Rugby Football, American (NFL) Football, Boxing, Mixed Martial Arts (MMA), etc., and particularly professional participants in sports, receive impacts from collisions with other participants during match play. These impacts may be, and often are, heavy, violent impacts and may include direct head impacts. A head of the participant receiving such a heavy impact may be moved violently and be subject to great accelerative forces, termed hereinafter a “head impact event.” While an individual head impact event may not cause a concussion event of its own effect, or other form of brain injury, the effect of such violent movements can be cumulative. Therefore, when a participant has sustained a critical number of violent head movements over a certain period it is advisable to prevent the participant from playing in further games, matches or events to reduce the risk of the participant being exposed to the chance of a potential serious head impact event, for example, one that might cause concussion, or further concussion, or other serious injury. Additionally, multiple relatively low impact head impact events may have a cumulative adverse effect on brain function. It is possible to monitor impacts sustained by participants, not only during individual matches, but also over the course of their careers so that a medical team or coach, for example, can be made aware of the situation. A participant may be advised as to when they should next play or train.

[0006] In addition to impacts sustained by participants from other participants during, for example, a match or game, lower-level impacts that occur during low relative intensity training may negatively affect participant health. Furthermore, the cumulative effect of low impacts sustained during non-contact sports such as the winter sport “skeleton” may also negatively affect participant health. There is therefore a need to record lower-level impacts as well as high-level impacts. i In an attempt to objectively measure the accelerations or forces sustained by a participant it has been suggested to use monitoring units to be worn by the participant. Such monitoring units include sensors, for example inertial measurement units, which operate to monitor acceleration experienced by a wearer during the course of match play. Data produced by the sensors of the monitoring units can be stored in an on-board memory and / or transmitted to a monitoring station for review by a technician. However, use of such monitoring units, particularly in professional games, may be prohibited under the regulations of certain sports, because the regulations prohibit the attachment of solid objects to the outside of a body of the participant (i.e. either worn by the participant or worn in the clothing of the participant).

[0007] In addition, there has been resistance from participants who are reluctant to adopt the use of such monitoring units. This may stem from a concern that their careers may be ended prematurely if they are involved in what is assessed to be too many head impact events. It is therefore desirable that any system developed to address the problems of low adoption rates and reducing subjectivity in assessments can accurately measure the accelerations sustained to try to reduce instances of false positives, and possibly lengthen a playing career otherwise shortened due to the inaccuracy and procedures associated with conventional approaches.

[0008] One type of known monitoring unit comprises an adhesive-backed unit, which allows for mounting of the unit behind an ear of a participant. The unit is operative to monitor for head impact events. However, measured impact readings from such units can vary extensively, depending on the location of the sensor behind the ear, which puts into question the accuracy of the measurements. Furthermore, as discussed above, use of such devices in professional games are prohibited.

[0009] Another type of known monitoring unit comprises a unit integrated with, or embedded in, a helmet (e.g. as used in American Football). Again, this type of unit is operative to monitor for head impact events during match play. However, as the helmets may move relative to the head during an impact event the measurements may be inaccurate and may not provide an accurate indication of whether or not a head impact event has occurred. In addition, such a system is suitable only for sports like American Football where helmets are used and is not suitable for other sports such as, for example, Rugby Football. A further known type of monitoring unit comprises an intra-oral device such as a mouth-guard or gum-shield (hereinafter “mouth-guard”) embedded with sensors. Such types of units have been increasingly adopted, because they are worn within a mouth of the participant (and so their use is unlikely to be prohibited by the regulation of many sports, because they are not worn outside the body). Furthermore, they are seen as potentially more accurate than external units worn on the body, or located in helmets, because they may measure more accurately the sustained acceleration by a participant due to an impact on the participant (from which acceleration an impact force can be derived). This is because they are typically worn against teeth of the upper jaw, and since the upper jaw is a fixed part of the head (as opposed to the lower jaw, which is moveable relative to the rest of the head), will move with the head. Therefore, the unit will typically undergo the same movement during an impact event (and experience the same forces and accelerations) as that experienced by the head itself. Such units are seen to be beneficial, because no adhesions of sensors to the head or neck of the participant are required.

[0010] Storage of data generated by sensors presents a number of issues in the field, which are typically resolved by transmission of the data to a secondary device. However, such transmission uses power that may otherwise be used for recording data, and also occupies a number of processing resources which may otherwise impede data acquisition.

[0011] Furthermore, memory management is typically handled by using processor resources to allocate memory in whatever fashion is deemed most flexible and capable to handle data of differing dimensions, rather than being optimised to accommodate efficient storage with minimal power consumption.

[0012] Known intra-oral devices are limited by available power and on-board memory constraints, further limiting the quantity of useful data that can be gathered in a session of use.

[0013] Aspects and embodiments of the present invention have been devised with the foregoing in mind.

[0014] Summary

[0015] Aspects and embodiments of the present invention provide an intra-oral device which is capable of continuously recording impact data, in contrast to the known solutions which record impact data based on detection of impact events of a given threshold. The provision of continuous impact data recording has the effect of recording all impacts within resolution of the sensors, regardless of the intensity relative to a given threshold.

[0016] Viewed from a first aspect, there is provided an intra-oral device for providing a stream of data representative of acceleration experienced by a wearer of the device. The device comprises: an acceleration sensor; a first memory; a second memory with a lower latency than the first memory; and one or more processor resource. The one or more processor resource is configured to: identify a start of a data record for data to be stored in a first memory; receive a data stream comprising one or more data values; and store the data stream values in a first buffer of a plurality of buffers in a second memory with a lower latency than the first memory as buffered values. Responsive to a determination that the first buffer is full, the processor resource is further configured to: store further data stream values in a second buffer of the plurality of buffers as buffered values; and transfer the buffered values from the first buffer to the data record in the first memory. The processor resource is further configured, responsive to a determination that the second buffer is full, to: store further data stream values in another buffer of the plurality of buffers as buffered values; and transfer the buffered values from the second buffer to the data record in the first memory.

[0017] Viewed from a second aspect, there is provided a computer-implemented method for storing a stream of data representative of acceleration in a memory for an intra-oral device, the method comprising: identifying a start of a data record for data to be stored in a first memory; receiving a data stream comprising one or more data values; storing the data stream values in a first buffer of a plurality of buffers in a second memory with a lower latency than the first memory as buffered values. Responsive to a determination that the first buffer is full: storing further data stream values in a second buffer of the plurality of buffers as buffered values; and transferring the buffered values from the first buffer to the data record in the first memory. Further, responsive to a determination that the second buffer is full: storing further data stream values in another buffer of the plurality of buffers as buffered values; and transferring the buffered values from the second buffer to the data record in the first memory. In some embodiments in normal operation of a high-latency memory such as NOR flash, a number of processes are performed by a memory controller of the NOR flash memory which temporarily inhibit read and write access to the memory. Such a memory controller may be a flash translation layer (FTL) which performs operations such as error correction and management of bad memory address. A bad memory address is an address which is no longer functional. In periods of such management, the memory may not be able to accept new data values. Similarly, the memory may not be able to accept new data values at a high rate because write operations in a NOR flash memory are longer in duration due to the need to address each specific bit in turn. An intra-oral device and method of managing memory in accordance with the foregoing provides for storage of data in relatively high latency memory devices. Specifically, data from a data stream which arrives at a fixed rate that may at times be faster than the relatively high latency memory devices may accept new data values, due to memory management processes, or slow writing speeds. Thus a more efficient usage of a non-volatile memory is achieved.

[0018] In some embodiments, the one or more processor resource is further configured to: write the buffered values from the buffer to the data record; and responsive to completion of the writing, erase the contents of the buffer to form an erased buffer. The processor may further prepare the erased buffer for receiving data stream values for transferring buffered values from a buffer to the data record in the first memory. Regeneration of the buffers in this way preserves or makes available again space in the relatively low latency memory.

[0019] In some embodiments, another buffer of the plurality of buffers comprises any buffer of the plurality of buffers which is not full. In some embodiments, another buffer of the plurality of buffers comprises the first buffer.

[0020] Thus, it may be the first buffer, or third or further buffer which is used as the read buffer whilst the second buffer is a write buffer. Which buffer is used as the write or read buffer is not limited except, for example, in embodiments in which a buffer is not able to be both the read buffer and the write buffer simultaneously.

[0021] Some further embodiments are further configured to store the buffered values sequentially and concatenated within the second memory, and further configured to process the buffers containing the buffered values in the order in which they were filled. Sequential storage of files in the relatively high latency memory allows for maximisation, or at least greater use, of available memory volume given unknown sizes of the file due to receiving values from a data stream for an unknown duration.

[0022] In some embodiments, the second memory comprises addressable bits. Thus, the device is capable of individually addressing bits in the memory, reducing wasted memory space.

[0023] In some embodiments wherein the memory comprises addressable bits, to identify a start of a data record the device is further configured to determine whether a data record exists in the second memory, and responsive to a determination that a data record does not exist, determine a lowest address value of the second memory as the address for a start of a new data record, and create a data record at the determined address. Responsive to a determination that at least one data record does exist, the device is configured to sequentially interrogate data records in the second memory to identify an address for a start of a new data record.

[0024] Such embodiments thereby reduce wasted memory space by facilitating the sequential storage method in the memory. By identifying the earliest address available in the memory for storing a new file, usage of the available memory space is improved.

[0025] In some embodiments, an address of the end of a data record is adjacent the address of the start of the next data record or the address for a new data record.

[0026] This further improves space efficiency or usage of memory.

[0027] In some embodiments, the device comprises a further sensor for determining the proximity of a gum or tooth of a user and further configured to instantiate a data stream responsive to a determination that the device is in a mouth of a user.

[0028] When the intra-oral device is placed in the mouth of the user the recording of data begins thereby preventing, or at least reducing the likelihood of, wasted energy and memory space recording data when the device is not in the mouth of a user.

[0029] Some embodiments are further configured to inhibit receiving the data stream and transfer the stored data stream values in each buffer containing data values to the data record responsive to a determination that the intra-oral device is no longer in the mouth of the user.

[0030] In addition to reducing the likelihood of wasted energy and memory space, the inhibiting of the data stream once the device is removed from the mouth of a user prevents recording of data which is not representative of the acceleration of the head of a user. The data is recorded for the duration that the mouthguard is in the mouth of a user and stops responsive to the mouthguard being removed or power to the mouthguard is stopped due to depletion of an on-board battery. This allows for maximum, or at least as greater amount as reasonably possible, data collection for analysis. An effect is the provision of a device which is capable of continuous recording on impact data whilst the user is wearing the device, thereby capturing all possible data given sensor resolution whilst the user is wearing the device.

[0031] Some embodiments are configured to determine whether a file exists in the second memory, the data record comprises a file comprising a header and an array, the header comprising an indicator of the end address of the file and an indicator of a state of the file.

[0032] A file header allows for important information to be associated with the data in the file in a memory storage effective manner, and facilitates navigation of the chain of sequential files.

[0033] In some embodiments where the file comprises a header comprising an indicator of the status of the file, the state of the file is one of: the file is the last file; the file is open; the file is closed.

[0034] The indicator of the status of the file allows for the identification of the type of file at each address, and to identify if writing to the file was completed.

[0035] In some embodiments, sequentially interrogating the files in the storage location to identify an address for a new file comprises: a) identifying the file with the lowest or earliest address in the storage location as the present file; b) reading the indicator of the end address of the file from the header of present file to identify the address of the next file in the storage location; c) identifying the next file in the storage location as the present file; d) reading the indicator of the state of the file from the header of the present file; e) responsive to a determination that the present file is the last file, reading the indicator of the end address of the file to determine the next empty address of the storage location; f) responsive to a determination that the present file is closed, performing steps b to d and conditionally e or f, dependent upon the state of the file. Interrogating the file headers, as set out above, allows rapid navigation of the file chain by reducing required read operations of the relatively high latency memory, in that only select information from the header of the file is read rather than the contents of the array of the file.

[0036] Some embodiments interrogate the headers of the files responsive to a determination that a file state is open, to search the addresses of the storage location between the start of the file and the end of the storage location to identify the end address of the file; change the file status to indicate it is closed; and update the indicator of the end address of the file with the identified end address of the file.

[0037] An embodiment therefore is enabled to identify the end of the file and update the header of the file to indicate that the ‘open’ file is now complete, allowing the system to make use of the rest of the memory. Without this information, the system may not be able to save more data without excessive memory wastage because an unknown amount of the memory would be unused. State indicators of the file allow for the system to determine, typically rapidly, what action may be necessary, and also allows the system to determine what the last task of the system was before a power failure thereby assisting in last state recovery.

[0038] In some embodiments, the search identifies formatted data points. Any formatted points will have been changed from the default value of ‘T to a value of ‘O’, indicating that information has been written.

[0039] In some embodiments, the search comprises a half-interval search, wherein the half-interval search is conducted until the start and end of the search range are adjacent.

[0040] A half-interval search is an efficient approach for searching an ordered database. In this case, because the memory is filled sequentially, the memory can be considered as ordered because formatted data points will be stored in the memory starting from the earliest position of the memory and ending at the latest point.

[0041] If a file is not closed, such as in the event of power loss during writing a file, no end address will be provided in the header file. The next time the system is powered and searching for an address for a new data record, the system recognises that the file is ‘open’ and therefore that the end address is unknown. Using a half-interval search, the system checks the formatting of the data points in each address until the last data point is identified. Then the header is updated to indicate the end address of the file.

[0042] The end of search is determined when the upper and lower limits of the search are adjacent in memory addresses. This indicates that the latest formatted data point is the upper limit, and the earliest unformatted point is the lower limit.

[0043] In some embodiments, the header of a file further comprises a timestamp wherein the timestamp corresponds to the time that the first data stream value stored in the file was recorded by the accelerometer.

[0044] The timestamp will be indicative of the time that the first sensor value of the array of the file was received or was recorded. The time that each subsequent reading was obtained can then be calculated from the known first value time, by using the known sampling frequency of the sensors.

[0045] Inclusion of a timestamp in the header and not in the data array allows for more compact storage of data, because only one timestamp is required per file.

[0046] In some embodiments, the device is further configured to write the buffered values from a buffer to a file by writing the buffered values into the array of the file.

[0047] Thus, the buffered values are stored in the array of the file.

[0048] In some embodiments, the indicator of the end address of the file comprises a size of the file header and comprises a number of data points in the array.

[0049] The indicator of the next address of the file may therefore comprise the information required to derive the end address of the file, as well as derive the end address of the header of the file and therefore the start and end addresses of the array of the file. This allows the system to efficiently determine where the relevant data is in memory, reducing read operations required to navigate the memory.

[0050] Some embodiments are further configured to identify the next empty address in the storage location by multiplying the number of data points of the file with the size of the data points to arrive at a data volume and adding the data volume to a size of the file header and further adding the current address.

[0051] The addressing system of the storage location may be based on volume and addressable bits, thus the address of the storage location that has no data can be calculated from the volume of the current file, if the current file is the last file. Furthermore, the calculation of the end address of the file in this manner allows further improvements in efficiency of the memory in that the header comprises the volumes of the header and array, and thus the system can compute the end of the array whilst also knowing the locations of the end of the header and start of the array, without further memory used to indicate these locations in memory.

[0052] Some embodiments, are further configured to receive a reference time; determine an interval between the reference time and the current system time; and assign a new timestamp to the data record using the determined interval.

[0053] The timestamp may initially be a value in ‘system time’, for example number of system ticks since the system was powered on. One or more embodiments are operable to receive a value indicative of a current time and then adapt the timestamp values of the headers of the files to reflect the correct time they were recorded, as derived from the system time. The timestamps of the file headers originally generated relative to system time can be updated to reflect the correct time based on a reference real-time value from a computing device for example.

[0054] In some embodiments wherein the timestamp is received via wireless communication, for example Bluetooth, RTM.

[0055] Bluetooth RTM modules are efficient and high-bandwidth, thus being suited to this task.

[0056] In some embodiments the second memory is volatile-type memory and the first memory is non-volatile type memory.

[0057] The relatively high latency memory being non-volatile memory results in a long storage time and reliability of the memory in the environment in which an intra-oral device is disposed. The size constraints on the system impose a limit on the processing power, memory volume and electrical power provision. The system must operate for as long as possible without knowledge of when the current session will end, and without knowledge of forthcoming power outages. The benefit of a nonvolatile memory is that without power supply, the data stored is not lost.

[0058] In some embodiments, the non-volatile type memory is flash memory.

[0059] Flash memory is a well-known non-volatile memory that is capable of preserving data without a power source for long periods of time.

[0060] In some embodiments, the flash memory is NOR flash memory.

[0061] NOR type flash memory provides individually addressable bits which can be individually written or read, in contrast to NAND type memory which requires that a predetermined number of bits be written to in a single operation. The benefit of NOR type flash is that it requires less power to idle, and in the case of sequential memory storage there are fewer ‘wasted’ bits. NOR-type lash memory has a higher latency when compared to RAM, because of the unpredictable write speeds of NOR-type flash. Latency in this context has the meaning of the delay before a transfer of data begins following an instruction for its transfer.

[0062] In some embodiments, the acceleration sensor comprises an accelerometer and the sensor values are generated by at least the accelerometer, and the accelerometer comprises an accelerometer for each of three mutually perpendicular axes.

[0063] An accelerometer is an appropriate device to use to measure motion and acceleration of a user’s head, and the quality of the data is improved by having a sensor for each cartesian axis that the head may move in.

[0064] In some embodiments the acceleration sensor comprises a gyroscope, wherein the sensor values are generated by at least the gyroscope, and the gyroscope comprises a gyroscope sensor for each of three mutually perpendicular axes.

[0065] A gyroscope is an appropriate device to use to measure position and angular acceleration of a user’s head, and the quality of the data is improved by having a sensor for each cartesian axis that the head may move in.

[0066] In some embodiments the data stream values are received at the rate of 1 kHz.

[0067] The accelerometer and gyroscope values are generated at a defined interval in real-time and received by the buffer in order to be stored in the second memory. This provides high temporal resolution data concerning motion of the head of a wearer.

[0068] The rate of 1 kHz is advantageous in that impacts in excess of 10g linear acceleration can be accurately resolved by this sampling frequency when the object undergoing acceleration is a user’s head.

[0069] In some embodiments, the one or more processor resources of the device are configured to alternate between storing data stream values in a buffer of the plurality of buffers; and transferring the buffered values to a data record.

[0070] In order to reduce processing requirements, the one or more processors do not undertake parallel tasks and instead alternate between the task of writing data to the second memory and receiving data into the first, second or further buffer.

[0071] In some embodiments, the proximity sensor is an infrared sensor arranged to detect proximity of a gum; and optionally additionally configured to detect physiological data; and optionally is configured to further detect at least a pulse of a user. An infrared sensor is capable of both detecting proximity of a gum and detecting physiological data, increasing the breadth of data that can be recorded by the intra-oral device. It may also serve as a confirmation that the proximity detection is of a gum, in that a gum will display physiological properties not present in otherwise inert objects.

[0072] In some embodiments, a system according to the invention includes a further computing device remote to the intra-oral device which is configured to retrieve data from the relatively high latency memory by wirelessly receiving the data records to a memory of a computing device remote from the intra-oral device; identifying the timestamp indicating the time the first data value in the file was received; re-storing in a new larger file the first value of the file array such that it is associated with the timestamp as the time of acquisition; and re-storing each subsequent value of the file array such that it is associated with a time of acquisition calculated based on the timestamp of the first value, the rate of data storage, and the address of the value in the file.

[0073] The use of a further computing device to analyse the data of the second memory is further enabled by ascribing individual time stamps to each of the values of accelerometer and gyroscope data derived from the known sampling rate of the sensors and the timestamp of the file. This data can be calculated without requiring storage in the second memory of the intra-oral device.

[0074] Viewed from a third aspect there is provided a kit comprising a device as described in the foregoing and a remote computing device as described in the foregoing. Thereby providing a system for measuring, collecting and storing data representative of accelerations of the head of a user.

[0075] Viewed from a fourth aspect there is provided a system for storing data in relatively high latency memory devices, comprising a device as aforesaid described as the first aspect and a remote computing device for receiving data from the device.

[0076] Brief description of the figures

[0077] Fig. 1 shows a schematic of a system arranged in accordance with an embodiment of the invention.

[0078] Fig. 2 shows a process flow control diagram of a method in accordance with an embodiment of the invention. Fig. 3 shows a process flow diagram of a method of finding an address for a next file according to an embodiment of the invention.

[0079] Fig 3A shows an extension of the process flow diagram of Fig. 3, for the case that a file has the state ‘open’.

[0080] Fig. 4 is an illustration of the way in which buffers are used in an embodiment according to the invention.

[0081] Detailed description

[0082] In general overview a device comprising a data memory and a method of managing memory of the intra-oral device achieves improvements in storing impact information, acceleration information, and bioinformatics information of a user. The method involves storing data in sequential files in a chain on a non-volatile memory in an intra oral device.

[0083] Fig 1 depicts a system in accordance with the invention comprising a mouthguard 100 and a computer system 111. The mouthguard is equipped with a proximity sensor 101 , processing and memory resources 102, flash memory 109, a gyroscope 108, an accelerometer 107, and a Bluetooth (RTM) module 110.

[0084] The processing and memory resources 102 comprise processor 112 and a RAM 105. The processor 112 is configured at run time to support a storage process

[0085] 103 and an interrupt process 104, whilst the RAM 105 supports a number of buffers 106(a-e).

[0086] In general overview, when in operation, the storage process 103 works to transfer data from the buffers 106 to the flash memory 109. The interrupt process

[0087] 104 is initiated when there is data to collect from the accelerometer 107. The accelerometer is configured to notify the interrupt process 104 whenever data is available to collect. The interrupt process 104 reacts to the availability of new data to collect by pausing the transfer of data to the flash memory 109. Data is then read from the accelerometer 107 and the gyroscope 108 by the data stream 113 and stored in a read buffer.

[0088] The read buffer is one of the plurality of buffers which is at that moment prepared by the system to be written to. When the read buffer is full, it changes mode and operates as a write buffer.

[0089] The gyroscope and accelerometer acquire data continuously throughout operation of the mouthguard. Although both sensors feed data to the data stream, the interrupt process 104 only reacts to the arrival of a value from the accelerometer. In the described embodiment the gyroscope samples at a higher frequency than the accelerometer thus ensuring the likelihood that when an accelerometer value arrives at the at least one processor, there will be a near-concurrent gyroscope value in the data stream following the accelerator value. The accelerometer samples at 1000 Hz (1 kHz) and triggers an interrupt each time a sample is available. Sampling at this frequency has been experimentally demonstrated to provide enhanced accuracy for impacts above 10g in magnitude. It is important to be able to correctly resolve a 10g impact as this is the acceleration above which instant damage can occur, as reported in King, Doug A et al. 2016. “The Influence of Head Impact Threshold for Reporting Data in Contact and Collision Sports: Systematic Review and Original Data Analysis.” Sports Medicine 46(2): 151-69 and Ng, Tracy P., William R. Bussone, and Stefan M. Duma. 2006. “The Effect of Gender and Body Size on Linear Accelerations of the Head Observed during Dally Activities." Biomedical sciences instrumentation 42: 25-30.

[0090] The gyroscope operates at a higher frequency of 1666 Hz so that accuracy is preserved.

[0091] The storage process writes data from the read / write buffers to the flash memory in between the interrupt process.

[0092] The accelerometer of the intra-oral device is configured to deliver a data value 411 into the data stream 401 at a rate of 1 kHz, and the processor of the device is configured to accept 205 new values from the data stream into the read buffer 402 when an accelerometer value arrives at the processor from the data stream. The gyroscope of the intra-oral device is configured to deliver data values at a rate greater than 1 kHz, but those values are only accepted when they are coincident or close to coincident with a value from the accelerometer. Thereby over-sampling is avoided. The interval between an accelerometer value and a gyroscope value is between 0ms and 0.6ms, with an average interval of 0.3ms.

[0093] The proximity sensor 101 is configured to detect the presence of a tooth or gum of a user. When the proximity sensor 101 detects a tooth or gum of a user, the mouthguard will begin recording data continuously. The mouthguard does not record sensor data from the gyroscope or accelerometer whilst the mouthguard is not in the mouth of a user as indicated by the proximity sensor. The proximity sensor 101 is an infrared sensor capable of pulse oximetry. The proximity sensor 101 may record heart rate and / or oxygenation data.

[0094] Once the user has completed the task for which the mouthguard was used, data can be transferred from the mouthguard to a computer system 111. The data is transmitted from the mouthguard to the computer system using Bluetooth RTM module 110. It will be appreciated that other wireless transmission modules and protocols may be appropriate.

[0095] A method of managing the memories in the intra-oral device comprises a number of processes, some of which are taken in a specific sequence and upon certain conditions. However, not all of the processes must be carried out in the order described herein and these processes will be identified as such.

[0096] Fig. 2 shows a process followed by the processor of the mouthguard according to an embodiment of the invention. At ‘Start-up’ 201 , when the device is initiated, the system executes instructions stored in a programmatic memory which is separate to the NOR type flash memory 105 and the RAM 105. The at least one processor interrogates the flash memory to identify, step 202, an address for a new file. Buffers are initialised, step 203, in RAM 105. At this point no further processes are performed until the mouthguard determines that it is in the mouth of a user.

[0097] Once the intra-oral device is inserted into the mouth of a user, an infrared sensor detects the proximity of a gum of the user. The detection process may involve polling of the infrared sensor, or use of an event driven process. Responsive to detecting, step 204, a gum of a user, the accelerometer and gyroscope begin sampling. Once a datapoint has been generated by the accelerometer, the interrupt process transfers the data from the accelerometer and gyroscope into the data stream. In response to receipt, step 205, of the first accelerometer value into the data stream, the interrupt process 104 stores, step 206, an accelerometer value and a gyroscope value in a first buffer of the plurality of buffers. The interrupt process then halts and process flow returns to the main sampling loop at step 204.

[0098] Each of the buffers 106 is first used to store, step 206, values from the data stream 113 as a read buffer, illustrated as reference 402 in figure 4. Responsive to the free memory of the read buffer 402 being depleted, the buffer 106 ceases to operate as a read buffer 402 and accept data stream values, and operates as a write buffer 404. In the illustrated embodiment there are 5 buffers to ensure, or at least increase the likelihood, that data can be captured even if downstream processes get delayed. Each buffer 404 holds a small amount of data that will take minimal time to write to flash, so jitter will not be introduced as other activities are interleaved with the writing of the 5 buffers.

[0099] Processor 112 further creates, step 207, a file in the flash memory at the address that was identified at step 202. A file as described herein comprises a header, comprising metadata, and an array 405, comprising data values. The header comprises a file descriptor which describes the state of the file, such as ‘open’, ‘closed’ or ‘last file’. The header further comprises an indicator of the length of the file, and / or an indication of the size of the file and / or an indicator of the last address index of the file. The header of the file further comprises a timestamp indicating the time at which the first sensor reading of the file was received by a buffer. The time is recorded in system time, where the system keeps a record of system time ‘ticks’ since system start. The timestamp format in UNIX is milliseconds, although it should be appreciated that any suitable timestamp format could be used. The header also comprises a unique file ID, a cyclic redundance check (CRC) value used to check the integrity of the data points, and a version number of the filesystem format.

[0100] The unique file ID is used to identify the specific file when it comes to be transferred from the flash memory to a separate computing device.

[0101] The write buffer 404 is then used to write data to the NOR type flash memory 109. The file is provided with a timestamp indicating the time the first data value in the write buffer 404 was received, and then the data values are inserted into the array of the file in the order in which they arrived. The buffer 404 therefore acts as a first-in-first-out (FIFO) buffer. Once all the data has been written from the buffer to the file, the storage process will erase, step 209, the contents of the buffer 403.

[0102] While the first buffer 404 is being written to the flash memory, another buffer 402 of the plurality of buffers 106a-106e is used to store data values from the data stream. At any given moment the buffer which is used to store data values from the data stream is known as the read buffer 402, and the buffer whose contents is being transferred to the flash memory is known as the write buffer 404.

[0103] Once the data is transferred from the write buffer 404, it is erased to become an erased buffer 403 and is ready to become a read buffer 402 again, prepared for the receipt of data values from the data stream. An erased buffer 403 may be a next read buffer 403, if it is selected by the system or if it is in a queue to be the next read buffer 403. The next read buffer 403 being the buffer which received the first data value from the data stream after the first read buffer 402 was full, is then set as a write buffer 402 and copied into the array of the same file as was opened for the first write buffer 404. This process repeats until either the device runs out of power or until the device is removed from the mouth of the user.

[0104] When the mouthguard is removed from the mouth of a user, the proximity sensor will no longer detect, step 210, the gum of the user. Responsive to no longer detecting a gum of a user, data is no longer accepted from the gyroscope and accelerometer which may cease sampling, and the storage process writes the remaining data from the buffers 106a-106e to the flash memory. Once all the data has been written from the buffers 106a-106e to the file in the flash memory, the storage process closes the file in the flash memory. Closing the file comprises updating the header of the file to indicate that the file status is ‘closed’ and updating the address of the last entry of the file in the file header.

[0105] Fig. 3 shows a process flow control diagram illustrating the process implemented by processor 112 for identifying an address for a new file in the flash memory. On start-up, the system reviews the contents of the flash memory by sequentially checking the saved files in the NOR type flash memory starting from the lowest addressable index of the memory, which will be the start of the file chain if there are files in the memory. The first, earliest, address in the flash memory is checked, step 301 , to determine if the memory at that address is occupied or not. Such a check may include for example determining that the bit or bits at that address have been formatted.

[0106] It is then determined, step 302, whether a file exists at that address. If no file exists, then the system stores the information that the first address index, index, or address of the memory is available for a new file and stores the address, step 303, as the address for a new file. If a file does exist at that address, the header of the file is read, step 304, to identify the status of the file, step 305.

[0107] If the file header indicates that currently examined file is the last file, then the next address after the end of the current file is calculated, step 306, and the address is stored, step 307, as the address for a new file to be created. The system will calculate the start address of the next file from the last address of the current file and ‘skip’ to that address, to interrogate the header of the next file. The system calculates the start address of the next file by adding the size of the file array and file header to the start address of the file. The size of the file array may be derived from the number of datapoints and the size of each datapoint.

[0108] If the file header indicates that the file is closed, then the header of the file is read, to identify the address of the end of the file, step 306. The address immediately adjacent but after the end of the file is calculated based on the address of the end of the file. The presence of a closed file indicates that a file chain is present.

[0109] The system skips, step 308, to this calculated address, checks for the presence of a file, step 302, and reads, step 304, the header of the next file determine the state of the file. If it is closed, then the file skips to the next address and repeats the process until the file being checked is either a last file or an open file.

[0110] If the status of the file is ‘last file’ 305, then the system reads the address of the end of the last file from the file header, calculates, step 306, the next empty address from knowledge of the last address of the file and stores 307 the information that this calculated address of the memory is available for a new file. The processes of checking the status of the file and calculating an end address of the file may be performed in any order. The first address where no file exists will be the address immediately after the end of the last file, this address is calculated, step 306 by adding the size of the file array and file header to the start address of the file. The size of the file array may be derived from the number of datapoints and the size of each datapoint. This address is stored, step 307, so that the system knows where to start the next file whilst wasting minimum storage volume.

[0111] Fig 3A shows an extension of the process flow control diagram of Fig 3 wherein a file header indicates that a file is open. If the status of the file is ‘open file’, this indicates the file was being written to when the system lost power or was otherwise interrupted by an event before the system could close the file. The header of the file cannot be relied upon therefore to identify the end address of the file, either because it does not contain a value for that address or because it is unlikely that the value is correct. Instead, the system uses a binary search algorithm such as, or similar to, a half-interval search, a logarithmic search or a binary chop to search for formatted data points in the indices of the memory past the start of the array of the open file. Such a search is possible due to the sequential arrangement of the data files in that the last formatted point in the memory will be the last recorded datapoint, as no data is recorded past this point. The system can therefore correctly identify the end of the open file without analysis of the content of the file merely using the information about the formatting of the data in the indices of the memory to achieve this task.

[0112] Referring now to figure 3A, the system samples, step 310, the memory using a geometric progression to select sample addresses until an unformatted data value is found. The sequential nature of the memory storage results in a structure where formatted data points are found at the start of the memory, and unformatted points are found at the end. The system starts the search at the start of the memory and checks the first datapoint. The check comprises identifying if any of the bits at the memory address has a value other than ‘T, which is the default unwritten value in a Flash type memory. The system calculates the next datapoint to check based on a geometric progression selected to balance speed and granularity requirements: x = 2n-1where xnis the next address to be checked, and n is the iteration number of the check.

[0113] If the system finds no formatted data points, then the memory is empty and the first address can be used.

[0114] The system checks the entries according to the geometric progression until an unformatted data point is identified. Once an unformatted data point is found, the address of the unformatted point is identified as the lower limit of a search range and the last found formatted point as the upper limit of the search range, step 311 The system then performs a so-called “half-interval” search. The search continues as long as the upper limit and the lower limit are not adjacent, step 312.

[0115] The half interval search comprises checking, step 313, an address which is between the upper and lower limits of the search range and equidistant from each limit to determine, step 314, if the data at that address is formatted. If the data is formatted, then this address is set, step 316, as the upper limit of the search. If the data is unformatted, this address is set, step 315, as the lower limit of the search.

[0116] The system checks at each iteration of the search to determine, step 312, if the upper limit and lower limit are adjacent. The search is performed such that the upper and lower limit will converge upon the last formatted data point.

[0117] If the limits are determined to be adjacent, the file header is set, step 317, to indicate that this is the last file. The end address of the file as indicated in the file header is set, step 318, to indicate the upper limit of the search. The lower limit of the search is stored 319 as the address for a new file.

[0118] In each of the cases the system identifies and stores a value that indicates what address a new file should begin in the flash memory.

[0119] Fig. 4 shows an illustration of the storage of a data value 408 in the device 100. In the illustrated scenario the data stream 401 delivers new values 409, 410, 411 , to the processing and memory resources 102. The processing and memory resources 102 receive, step 205 of Fig. 2, a data value 408, previously delivered by the data stream, and store data value 408 in a read buffer 402 of. In the illustrated embodiment there are three buffers, 402, 403 and 404. Data value 408 is stored in buffer 402 adjacent to the value received before it, 407. Value 407 was in turn received before 408, but after value 406. In the illustration of Fig. 4, diagonal filling lines indicate storage locations in the buffers or the storage location 405 that are filled.

[0120] Once the read buffer 402 is filled, it can no longer accept new data values and so it is set aside and becomes a write buffer such as buffer 404. Data values are then written or transferred, step 208 of Fig. 2, from the buffer 404 to the storage location or array of file 405. In Fig 4, the header of file 405 is not shown. The header of the file is placed at the start address, or earliest address of a given file. The header of the file occupies the first portion of the file. The data values are read from buffer 402 in the order in which they were stored, which in turn is the order in which they arrived from the data stream. Data values are therefore stored in buffer 402 adjacent to one another in the order they were present in the data stream, i.e. the order in which they were recorded, and since the frequency of the recording of data points is known, in the described embodiment, to be 1 kHz no timestamp needs to be assigned to each of the data values to be able to infer the time each data value was recorded, for example inference by a computer system 111.

[0121] Once the data has been written or transferred from a buffer, 404 in Fig. 4 to the file or storage location, 405, the buffer 404 is erased such that it contains no data, as illustrated by buffer 403. Thus, the Buffer 403 is thereby prepared for receiving new data values when buffer 402 is full.

[0122] The device may then be connected to an external, second computational device which is operable to communicate with the intra-oral device by way of Bluetooth RTM or other radio-frequency communication means. The external device communicates the correct time (i.e. the local time of the external device) to the intra-oral device. The intra-oral device then corrects the timestamp of the files to reflect the correct local time by deriving the correct local time of the timestamp using the system ticks since start.

[0123] The files are then copied to the external system, which calculates the time that each data value was recorded by using the corrected timestamp and the known recording interval of 1 ms (1 / 1 kHz). The calculated time stamp is associated with each data value and stored.

[0124] A device in accordance with an embodiment of the invention may further be operable to record other physiological data provided by other sensors, such as heard rate, blood oxygenation, temperature, and the like. It will be appreciated that the memory management described is not limited to specifically gyroscope or accelerator data, or data specifically related to impacts.

[0125] Herein the terms ‘address’, ‘index’ and ‘address index’ all refer to the address of an addressable bit in memory. Particularly, they refer to the location itself, not the identifier of the location or ‘pointer’. For example, when reference is made to an address that is stored, what is stored is the information which would lead a memory controller of the memory in question to address the specific bit which has been identified by the system.

[0126] The term ‘file chain’ within the specification refers to a set of files arranged sequentially within the flash memory.

[0127] Within the specification the term ‘index’ refers to an addressable memory index within a memory bank. The addressing of the index is typically performed by a memory controller, but the index may be passed to the controller by the CPU operating according to the claimed method.

[0128] The NOR type flash memory is herein referred to as the relatively high latency memory, or the flash memory. These terms are used interchangeably within the specification, where the latter terms are broader categories of memory which encompass the NOR type flash memory. Where any term other than ‘NOR type flash memory’ is used, it will be appreciated that any suitable memory system that falls within the definition of that term would be suitable for performing that particular task.

[0129] It should be appreciated that although NOR type flash is implemented in the illustrative embodiment of the specific description, NAND type flash memory could also be used in an intra-oral device configured to perform the management method. Calculation of the next address of a file from file header information may be performed using the following operation described in pseudocode: address_next_file = address_current_file + sizeof(file_descriptor_header) + ( number_of_data_points * sizeof(file_data_point) ).

[0130] Where address_next_file is the address of the next file, address_current_file is the address of the current file, file_descriptor_header is the header of the current file, sizeof() is an operation which returns the size of the object it is passed in terms of data volume, such that sizeof(file_descriptor_header) returns the volume of the file descriptor header, number_of_data_points is the number of data values in the file array, and file_data_point is an object representing a data point.

[0131] All references made herein to orientation (e.g. front, rear, upper, lower, anterior and posterior) are made for the purposes of describing relative spatial arrangements of features, and are not intended to be limiting in any sense.

[0132] It will be understood by those skilled in the art that the drawings are merely diagrammatic and that further items of equipment may be required in a commercial apparatus. The position of such ancillary items of equipment forms no part of the present invention and is in accordance with conventional practice in the art.

[0133] Insofar as embodiments of the invention described above are implementable, at least in part, using a software-controlled programmable processing device such as a general purpose processor or special-purposes processor, digital signal processor, microprocessor, or other processing device, data processing apparatus or computer system it will be appreciated that a computer program for configuring a programmable device, apparatus or system to implement methods and apparatus is envisaged as an aspect of the present invention. The computer program may be embodied as any suitable type of code, such as source code, object code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The instructions may be implemented using any suitable high-level, low-level, object- oriented, visual, compiled and / or interpreted programming language, such as, Liberate, OCAP, MHP, Flash, HTML and associated languages, JavaScript, PHP, C, C++, Python, Nodejs, Java, BASIC, Perl, Matlab, Pascal, Visual BASIC, ActiveX, assembly language, machine code, and so forth. A skilled person would readily understand that term “computer” in its most general sense encompasses programmable devices such as referred to above, and data processing apparatus and computer systems. Suitably, the computer program is stored on a carrier medium in machine readable form, for example the carrier medium may comprise memory, removable or non-removable media, erasable or non-erasable media, writeable or re-writeable media, digital or analogue media, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM), Company Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD) subscriber identity module, tape, cassette solid-state memory.

[0134] As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.

[0135] As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).

[0136] In addition, use of the “a” or “an” are employed to describe elements and components of the invention. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.

[0137] In view of the foregoing description it will be evident to a person skilled in the art that various modifications may be made within the scope of the invention.

[0138] For example, although embodiments have been described in which impact event data may be transmitted to a monitoring station in real-time, impact event data may be stored and downloaded wirelessly, or by wired coupling, at breaks in a match, e.g. half-time, or at the end of the match. This may be particularly suitable for non-professional environments and download may be to a device such as a smartphone or other mobile communication device running a suitable application.

[0139] One or more embodiments have been described in the context of acceleration monitoring. Optionally, monitoring circuitry, power sources and transmitter and / or receiver circuitry may be included for monitoring other factors such as, for example, physiological data, for example, hydration, temperature, electrolyte levels, amongst other things.

[0140] One or more embodiments have been described as configured and operating at run time. As will be evident to a person of ordinary skill in the art, programmatic instructions executable by a processor configure the processor, typically loaded from read-only memory (ROM), to operate in accordance with an embodiment of the present invention, for example storing processor executable instructions for the storage process 103 and interrupt process 104. Additionally, although embodiments have been described with a gyroscope sampling the accelerometer, embodiments may be implemented in which the gyroscope samples at the lower than the accelerometer with the sub- optimal likelihood that a gyroscope value nearconcurrent with an accelerator value is less likely than when the gyroscope sample rate is greater than a teleprompter sample rate.

[0141] The scope of the present disclosure includes any novel feature or combination of features disclosed therein either explicitly or implicitly or any generalisation thereof irrespective of whether or not it relates to the claimed invention or mitigate against any or all of the problems addressed by the present invention. The applicant hereby gives notice that new claims may be formulated to such features during prosecution of this application or of any such further application derived therefrom. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in specific combinations enumerated in the claims.

Claims

Claims1 . An intra-oral device for providing a stream of data representative of acceleration experienced by a wearer of the device, comprising: an acceleration sensor; a first memory; a second memory with a lower latency than the first memory; and one or more processor resource; wherein the one or more processor resource is configured to: identify a start of a data record for data to be stored in a first memory; receive a data stream comprising one or more data values; store the data stream values in a first buffer of a plurality of buffers in a second memory with a lower latency than the first memory as buffered values; responsive to a determination that the first buffer is full: store further data stream values in a second buffer of the plurality of buffers as buffered values; and transfer the buffered values from the first buffer to the data record in the first memory; responsive to a determination that the second buffer is full: store further data stream values in another buffer of the plurality of buffers as buffered values; and transfer the buffered values from the second buffer to the data record in the first memory.

2. A device according to claims 1 , wherein the one or more processor resource is further configured to: write the buffered values from the buffer to the data record; and responsive to completion of the writing, erase the contents of the buffer to form an erased buffer and prepare the erased buffer for receiving data stream values; for transferring buffered values from a buffer to the data record in the first memory.

3. A device according to claim 1 or claim 2, wherein another buffer of the plurality of buffers comprises any buffer of the plurality of buffers which is not full.

4. A device according to any preceding claim, wherein another buffer of the plurality of buffers comprises the first buffer.

5. A device according to any preceding claim, further configured to store the buffered values sequentially and concatenated within the second memory, and further configured to process the buffers containing the buffered values in the order in which they were filled.

6. A device according to any of claim 1 to claim 5, wherein the second memory comprises addressable bits.

7. A device according to claim 6 wherein to identify a start of a data record the device is further configured to: determine whether a data record exists in the second memory; responsive to a determination that a data record does not exist: determine a lowest address value of the second memory as the address for a start of a new data record; and create a data record at the determined address responsive to a determination that at least one data record does exist: sequentially interrogate data records in the second memory to identify an address for a start of a new data record.

8. A device according to claim 7 wherein an address of the end of a data record is adjacent the address of the start of the next data record or the address for a new data record.

9. A device according to any of claim 1 to claim 8 further comprising a further sensor for determining the proximity of a gum or tooth of a user and further configured to instantiate a data stream responsive to a determination that the device is in a mouth of a user.

10. A device according to claim 9, further configured to: inhibit receiving the data stream; and transfer the stored data stream values in each buffer containing data values to the data record; responsive to a determination that the intra-oral device is no longer in the mouth of the user.

11. A device according to any of claim 7 to claim 10, wherein the data record comprises a file comprising a header and an array, the header comprising: an indicator of the end address of the file; and an indicator of a state of the file.

12. A device according to claim 11 , wherein the state of the file is one of: the file is the last file; the file is open; the file is closed.

13. A device according to claim 12, wherein sequentially interrogating the files in the storage location to identify an address for a new file comprises: a) identifying the file with the lowest or earliest address in the storage location as the present file; b) reading the indicator of the end address of the file from the header of present file to identify the address of the next file in the storage location; c) identifying the next file in the storage location as the present file; d) reading the indicator of the state of the file from the header of the present file; e) responsive to a determination that the present file is the last file, reading the indicator of the end address of the file to determine the next empty address of the storage location; f) responsive to a determination that the present file is closed, performing steps b to d and conditionally e or f, dependent upon the state of the file.

14. A device according to claim 13 wherein the device, responsive to a determination that a file state is open, is further configured to: search the addresses of the storage location between the start of the file and the end of the storage location to identify the end address of the file; change the file status to indicate it is closed; and update the indicator of the end address of the file with the identified end address of the file.

15. A device according to claim 14 wherein the search identifies formatted data points.

16. A device according to claim 14 or claim 15 wherein the search comprises a half-interval search, wherein the half-interval search is conducted until the start and end of the search range are adjacent.

17. A device according to any of claim 12 to claim 16, wherein the header further comprises a timestamp.

18. A device according to claim 17, wherein the timestamp of the header corresponds to the time that the first data stream value stored in the file was recorded by the accelerometer.

19. A device according to any of claim 11 to claim 18, further configured to write the buffered values from a buffer to a file by writing the buffered values into the array of the file.

20. A device according to any of claim 11 to claim 19, wherein the indicator of the end address of the file comprises a size of the file header.21 . A device according to any of claim 12 to claim 20, wherein the indicator of the end address of the file comprises a number of data points in the array.

22. A device according to claim 21 dependent on claim 13 or any claim dependent on claim 13, further configured to identify the next empty address in the storagelocation by multiplying the number of data points of the file with the size of the data points to arrive at a data volume, and adding the data volume to a size of the file header and further adding the current address.

23. A device according to any preceding claim, further configured to: receive a reference time; determine an interval between the reference time and the current system time of the device; and assign a new timestamp to the data record using the determined interval.

24. A device according to claim 23, wherein the timestamp is received via wireless communication, for example Bluetooth, RTM.

25. A device according to any preceding claim, wherein the second memory is volatile-type memory and the first memory is non-volatile type memory.

26. A device according to claim 25, wherein the non-volatile type memory is flash memory.

27. A device according to claim 26, wherein the flash memory is NOR flash memory.

28. A device according to any preceding claim, wherein the acceleration sensor comprises an accelerometer and the sensor values are generated by at least the accelerometer.

29. A device according to claim 28 wherein the accelerometer comprises an accelerometer for each of three mutually perpendicular axes.

30. A device according to any preceding claim wherein the acceleration sensor comprises a gyroscope, wherein the sensor values are generated by at least the gyroscope.31 . A device according to claim 30 wherein the gyroscope comprises a gyroscope sensor for each of three mutually perpendicular axes.

32. A device according to any preceding claim, wherein the data stream values are received at the rate of 1 kHz.

33. A device according to any of claim 9 to claim 32, wherein the proximity sensor is an infrared sensor.

34. A device according to claim 33 wherein the infrared sensor is: arranged to detect proximity of a gum, and optionally additionally configured to detect physiological data; and optionally is configured to further detect at least a pulse of a user.

35. A computer-implemented method for storing a stream of data representative of acceleration in a memory for an intra-oral device, the method comprising: identifying a start of a data record for data to be stored in a first memory; receiving a data stream comprising one or more data values; storing the data stream values in a first buffer of a plurality of buffers in a second memory with a lower latency than the first memory as buffered values; responsive to a determination that the first buffer is full: storing further data stream values in a second buffer of the plurality of buffers as buffered values; and transferring the buffered values from the first buffer to the data record in the first memory; responsive to a determination that the second buffer is full: storing further data stream values in another buffer of the plurality of buffers as buffered values; and transferring the buffered values from the second buffer to the data record in the first memory.

36. A method according to claim 35, wherein transferring buffered values from a buffer to the data record in the first memory comprises:writing the buffered values from the buffer to the data record; and responsive to completion of the writing, erasing the contents of the buffer to form an erased buffer and preparing the erased buffer for receiving data stream values.

37. A method according to claim 35 or claim 36, wherein another buffer of the plurality of buffers comprises any buffer of the plurality of buffers which is not full.

38. A method according to any of claim 35 to claim 37, wherein another buffer of the plurality of buffers comprises the first buffer.

39. A method according to any of claim 35 to claim 38, wherein the buffered values are stored sequentially and concatenated within the second memory, and the buffers containing the buffered values are processed in the order in which they were filled.

40. A method according to any of claim 35 to claim 39, wherein the second memory comprises addressable bits.41 . A method according to claim 40 wherein identifying the start of a data record comprises: determining whether a data record exists in the second memory; responsive to a determination that a data record does not exist: determining a lowest address value of the second memory as the address for a start of a new data record; and create a data record at the determined address responsive to a determination that at least one data record does exist: sequentially interrogating data records in the second memory to identify an address for a start of a new data record.

42. A method according to claim 41 wherein an address of the end of a data record is adjacent the address of the start of the next data record or the address for a new data record.

43. A method according to any of claim 35 to claim 42, further comprising receiving a data stream responsive to a determination that the intra-oral device is in a mouth of a user.

44. A method according to claim 43, further comprising: inhibiting receiving the data stream; and transferring the stored data stream values in each buffer containing data values to the data record; responsive to a determination that the intra-oral device is no longer in the mouth of the user.

45. A method according to any of claim 41 to claim 44, wherein the data record comprises a file comprising a header and an array, the header comprising: an indicator of the end address of the file; and an indicator of a state of the file.

46. A method according to claim 45, wherein the state of the file is one of: the file is the last file; the file is open; the file is closed.

47. A method according to claim 46, wherein sequentially interrogating the files in the second memory to identify an address for a new file comprises: a) identifying the file with the lowest address value in the second memory as the present file; b) reading the indicator of the end address of the file from the header of present file to identify the address of the next file in the second memory; c) identifying the next file in the second memory as the present file; d) reading the indicator of the state of the file from the header of the present file;e) responsive to a determination that the present file is the last file, reading the indicator of the end index of the file to determine the next empty address of the second memory; f) responsive to a determination that the present file is closed, performing steps b to d and conditionally e or f, dependent upon the state of the file.

48. A method according to claim 47 further comprising: responsive to a determination that the file state is open: searching the addresses of the second memory between the start of the file and the end of the second memory to identify the end address of the file; changing the file status to indicate it is closed; and updating the indicator of the end address of the file with the identified end address of the file.

49. A method according to claim 48 wherein the search identifies formatted data points.

50. A method according to claim 48 or claim 49 wherein the search comprises a half-interval search, wherein the half-interval search is conducted until the start and end of the search range are adjacent.51 . A method according to any of claim 46 to claim 50, wherein the header further comprises a timestamp.

52. A method according to claim 51 , wherein the timestamp of the header corresponds to the time that the first data stream value stored in the file was recorded by the accelerometer.

53. A method according to any of claim 45 to claim 52, wherein writing the buffered values from a buffer to a file comprises writing the buffered values sequentially into the array of the file.

54. A method according to any of claim 45 to claim 53, wherein the indicator of the end address of the file comprises a size of the file header.

55. A method according to any of claim 45 to claim 54, wherein the indicator of the end address of the file comprises a number of data points in the array.

56. A method according to claim 55 dependent on claim 47 or any of claim 48 to 55 dependent on claim 47, wherein identifying the next empty address in the storage location comprises multiplying the number of data points of the file with the size of the data points to arrive at a data volume, adding the data volume to a size of the file header and further adding the current address.

57. A method according to any of claim 35 to claim 56, further comprising: receiving a reference time; determining an interval between the reference time and the current system time of the intra-oral device; and assigning a new timestamp to the data record using the determined interval.

58. A method according to claim 57, wherein the transmission is via wireless communication, for example Bluetooth, RTM.

59. A method according to any of claim 35 to claim 58, wherein the second memory is volatile-type memory and the first memory is non-volatile type memory.

60. A method according to claim 59, wherein the non-volatile type memory is flash memory.61 . A method according to claim 60, wherein the flash memory is NOR flash memory.

62. A method according to any of claim 35 to claim 61 , wherein the data stream values are sensor values.

63. A method according to claim 62, wherein the sensor values are generated by at least an accelerometer.

64. A method according to claim 62 or claim 63, wherein the sensor values are generated by at least a gyroscope.

65. A method according to any of claim 35 to 64, wherein the data stream values are received at the rate of 1 kHz.

66. A method of retrieving data from the flash memory of a device according to any of claim 1 to claim 34, comprising: receiving the data records to a memory of a computing device remote from the intra-oral device; identifying the timestamp indicating the time the first data value in the file was received; re-storing in a new larger file the first value of the file array such that it is associated with the timestamp as the time of acquisition; and re-storing each subsequent value of the file array such that it is associated with a time of acquisition calculated based on the timestamp of the first value, the rate of data storage, and the address of the value in the file.

67. A method according to claim 66, wherein the data is received wirelessly.

68. A system for storing data in relatively high latency memory devices, comprising a device according to any of claim 1 to claim 34 and a computing device for receiving data from the device, the computing device comprising a memory, one or more processors and a wireless transmitter configured to perform a method according to claim 67.

69. A computer program comprising computer or machine readable program elements implementable for configuring one or more processor resources to perform the method of any of claim 35 to claim 65.