Espansjoni tas-Softwer tal-Algoritmu tas-Sensor u l-Mozzjoni X-CUBE-MEMS1
“
Informazzjoni dwar il-Prodott
Speċifikazzjonijiet
- Product Name: MotionPW Real-time Pedometer
- Kompatibbiltà: X-CUBE-MEMS1 espansjoni għal STM32Cube
- Manifattur: STMicroelectronics
- Library: MotionPW Middleware Library
- Data Acquisition: Accelerometer
- Sampling Frekwenza: 50 Hz
Istruzzjonijiet għall-Użu tal-Prodott
Fuqview
The MotionPW library expands the functionality of the
X-CUBE-MEMS1 software by acquiring data from the accelerometer to
provide information about the number of steps and cadence performed
with the wearable device.
Kompatibilità
The library is designed for ST MEMS sensors only. Using other
MEMS sensors may result in different functionality and
prestazzjoni.
Implimentazzjoni
A sample implementation is available for X-NUCLEO-IKS4A1 and
X-NUCLEO-IKS01A3 expansion boards mounted on specified development
bordijiet.
Informazzjoni Teknika
For detailed functions and parameters of the MotionPW APIs,
refer to the MotionPW_Package.chm compiled HTML file li jinsab fil-
Documentation folder.
APIs
- MotionPW_GetLibVersion(char *version)
- MotionPW_Initialize(void)
- MotionPW_Update(MPW_input_t *data_in, MPW_output_t
*data_out) - MotionPW_ResetPedometerLibrary(void)
- MotionPW_ResetStepCount(void)
- MotionPW_UpdateEnergyThreshold(float *energy_threshold)
Mistoqsijiet Frekwenti (FAQ)
Q: Can I use MotionPW library with non-ST MEMS sensors?
A: The library is designed for ST MEMS sensors only.
Compatibility with other MEMS sensors is not guaranteed.
Q: X'inhi d-data meħtieġa tal-aċċelerometru samplipp
frekwenza?
A: Is-s meħtieġaampling frequency is 50 Hz for accurate
detection of steps and cadence.
Q: How do I initialize the MotionPW library?
A: Call the MotionPW_Initialize() function before using the
fitness activity library. Ensure the CRC module in the STM32
microcontroller is enabled.
"`
UM2350
Manwal għall-utent
Getting started with MotionPW real-time pedometer for wrist library in X-CUBEMEMS1 expansion for STM32Cube
Introduzzjoni
The MotionPW middleware library is part of the X-CUBE-MEMS1 software and runs on STM32 Nucleo. It provides real-time information about the number of steps and cadence which the user just performed with the wearable device (e.g. a smart watch). This library is intended to work with ST MEMS only. The algorithm is provided in static library format and is designed to be used on STM32 microcontrollers based on the ARM® Cortex®-M3, ARM Cortex®-M33, ARM® Cortex®-M4, ARM® Cortex®-M7 architecture. It is built on top of STM32Cube software technology to ease portability across different STM32 microcontrollers. The software comes with sampLe implimentazzjoni taħdem fuq bord ta 'espansjoni X-NUCLEO-IKS4A1 jew X-NUCLEO-IKS01A3 fuq bord ta' żvilupp NUCLEO-F401RE, NUCLEO-U575ZI-Q jew NUCLEO-L152RE.
UM2350 – Rev 4 – Mejju 2025 Għal aktar informazzjoni, ikkuntattja l-uffiċċju tal-bejgħ lokali tiegħek ta' STMicroelectronics.
www.st.com
UM2350
Akronimi u abbrevjazzjonijiet
1
Akronimi u abbrevjazzjonijiet
Akronimu API BSP GUI HAL IDE
Tabella 1. Lista ta' akronimi
Interfaċċja tal-ipprogrammar tal-applikazzjonijiet Pakkett ta' appoġġ tal-bord Interfaċċja grafika tal-utent Saff tal-astrazzjoni tal-ħardwer Ambjent ta' żvilupp integrat
Deskrizzjoni
UM2350 – Rev 4
paġna 2/16
2
2.1 2.2
2.2.1
2.2.2
Nota:
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
MotionPW overview
The MotionPW library expands the functionality of the X-CUBE-MEMS1 software.
The library acquires data from the accelerometer and provides information about the number of steps and cadence the user just performed with the wearable device.
Il-librerija hija mfassla għal ST MEMS biss. Il-funzjonalità u l-prestazzjoni meta jintużaw sensuri MEMS oħra mhumiex analizzati u jistgħu jkunu differenti b'mod sinifikanti minn dak deskritt fid-dokument.
A sample implementation is available for X-NUCLEO-IKS4A1 and X-NUCLEO-IKS01A3 expansion boards, mounted on aNUCLEO-F401RE, NUCLEO-U575ZI-Q or NUCLEO-L152RE development board.
MotionPW library
Technical information fully describing the functions and parameters of the MotionPW APIs can be found in the MotionPW_Package.chm compiled HTML file jinsab fil-folder tad-Dokumentazzjoni.
MotionPW library description
The MotionPW pedometer library manages the data acquired from the accelerometer; it features:
·
possibility of detecting the number of steps, cadence and confidence
·
rikonoxximent ibbażat fuq data aċċelerometru biss
·
data aċċelerometru meħtieġa sampfrekwenza tal-ling ta '50 Hz
·
rekwiżiti tar-riżorsi:
Cortex-M3: 3.7 kB ta' kodiċi u 1.8 kB ta' memorja tad-dejta
Cortex-M33: 3.5 kB ta' kodiċi u 1.8 kB ta' memorja tad-dejta
Cortex-M4: 3.5 kB ta' kodiċi u 1.8 kB ta' memorja tad-dejta
Cortex-M7: 3.6 kB ta' kodiċi u 1.8 kB ta' memorja tad-dejta
·
disponibbli għal ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 u ARM® Cortex®-M7
arkitetturi
MotionPW APIs
The MotionPW library APIs are:
·
uint8_t MotionPW_GetLibVersion(char *version)
jirkupra l-verżjoni tal-librerija
*verżjoni hija pointer għal firxa ta' 35 karattru
jirritorna n-numru ta' karattri fis-sekwenza tal-verżjoni
·
void MotionPW_Initialize(void)
performs MotionPW library initialization and setup of the internal mechanism including the dynamic memory allocation
This function must be called before using the fitness activity library and the CRC module in the STM32 microcontroller (in RCC peripheral clock enable register) has to be enabled.
UM2350 – Rev 4
paġna 3/16
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
·
void MotionPW_Update(MPW_input_t *data_in, MPW_output_t *data_out)
executes pedometer for wrist algorithm
Il-parametru *data_in huwa pointer għal struttura b'dejta ta' input
the parameters for the structure type MPW_input_t are:
AccX huwa l-valur tas-sensor tal-aċċelerometru fl-assi X fi g
AccY huwa l-valur tas-sensor tal-aċċelerometru fl-assi Y fi g
AccZ huwa l-valur tas-sensor tal-aċċelerometru fl-assi Z f'g
CurrentActivity is the enumerated input type MPW_activity_t with the following values:
MPW_UNKNOWN_ACTIVITY = 0x00
MPW_WALKING = 0x01
MPW_FASTWALKING = 0x02
MPW_JOGGING = 0x03
*data_out parameter is a pointer to a structure with output data
the parameters for the structure type MPW_output_t are:
Nsteps is number of steps performed by user
Cadence is the cadence of user steps
Confidence is the confidence of calculated output parameter
·
void MotionPW_ResetPedometerLibrary(void)
resets the library internal variables and mechanism into default values (including current step count)
·
void MotionPW_ResetStepCount(void)
resets the current step count
·
void MotionPW_UpdateEnergyThreshold(float *energy_threshold)
updated energy threshold to fine tune step detection algorithm
*energy_threshold parameter is a pointer to energy threshold value
UM2350 – Rev 4
paġna 4/16
2.2.3
Tabella tal-fluss tal-API
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
Figure 1. MotionPW API logic sequence
Ibda
Inizjalizza
GetLibVersion
Stenna l-Iskadenza tat-Tajmer Interruzzjoni tal-Qari tad-Dejta
Aqra l-Aġġornament tad-Data tal-Aċċellerometru
Get Outputs
2.2.4
Demo code The following demonstration code example reads data from the accelerometer sensor, obtains the current activity from MotionAW library and gets the number of steps, cadence and confidence from MotionPW library.
[…] #define VERSION_STR_LENG 35 […]
/* Initialization */ char lib_version[VERSION_STR_LENG];
/* Pedometer API initialization function */ MotionPW_Initialize();
/* Activity recognition API initialization function */ MotionAW_Initialize();
/* Optional: Get version */ MotionPW_GetLibVersion(lib_version);
[…]
/* Using Pedometer for wrist algorithm */ Timer_OR_DataRate_Interrupt_Handler() {
MPW_input_t MPW_data_in; MPW_output_t MPW_data_out;
UM2350 – Rev 4
paġna 5/16
2.2.5
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
MAW_input_t MAW_data_in; MAW_output_t MAW_data_out;
/* Get acceleration X/Y/Z in g */ MEMS_Read_AccValue(&MAW_data_in.Acc_X, &MAW_data_in.Acc_Y, &MAW_data_in.Acc_Z);
/* Get current activity */ MotionAW_Update(&MAW_data_in, &MAW_data_out, Timestamp);
MPW_data_in.Acc_X = MAW_data_in.Acc_X; MPW_data_in.Acc_Y = MAW_data_in.Acc_Y; MPW_data_in.Acc_Z = MAW_data_in.Acc_Z;
if (MAW_data_out.current_activity == MAW_WALKING) {
MPW_data_in.currentActivity = MPW_WALKING; } else if (MAW_data_out.current_activity == MAW_FASTWALKING) {
MPW_data_in.currentActivity = MPW_FASTWALKING; } else if (MAW_data_out.current_activity == MAW_JOGGING) {
MPW_data_in.currentActivity = MPW_JOGGING; } else {
MPW_data_in.currentActivity = MPW_UNKNOWN_ACTIVITY; }
/* Run pedometer for wrist algorithm */ MotionPW_Update(&MPW_data_in, &MPW_data_out); }
Algorithm performance The pedometer for wrist algorithm uses data from the accelerometer only and runs at a low frequency (50 Hz) to reduce power consumption. When replicating fitness activity with the STM32 Nucleo board, ensure the board is oriented perpendicularly to the forearm, to simulate the wristband position.
Figure 2. Orientation system for wrist-worn devices
Tabella 2. Ħin li jgħaddi l-algoritmu (µs) Cortex-M4, Cortex-M3
Cortex-M4 STM32F401RE f'84 MHz
Min
Medja
Max
38
49
616
Cortex-M3 STM32L152RE f'32 MHz
Min
Medja
Max
296
390
3314
UM2350 – Rev 4
paġna 6/16
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
Tabella 3. Ħin li jgħaddi l-algoritmu (µs) Cortex-M33 u Cortex-M7
Cortex- M33 STM32U575ZI-Q f'160 MHz
Min
Medja
Max
57
63
359
Cortex- M7 STM32F767ZI f'96 MHz
Min
Medja
Max
61
88
1301
2.3
Sample applikazzjoni
The MotionPW middleware can be easily manipulated to build user applications.
A sampL-applikazzjoni hija pprovduta fil-folder tal-Applikazzjoni. Hija ddisinjata biex taħdem fuq bord ta' żvilupp NUCLEO-F401RE, NUCLEOU575ZI-Q jew NUCLEO-L152RE konness ma' bord ta' espansjoni X-NUCLEO-IKS4A1 jew X-NUCLEO-IKS01A3.
The application recognizes the steps, cadence and confidence in real-time. The data can be displayed through a GUI.
Figura 3. Nukleo STM32: LEDs, buttuna, jumper
Il-figura ta 'hawn fuq turi l-buttuna tal-utent B1 u t-tliet LEDs tal-bord NUCLEO-F401RE. Ladarba l-bord jitħaddem, l-LED LD3 (PWR) jixgħel.
A USB cable connection is required to monitor real-time data. The board is powered by the PC via USB connection. This working mode allows the user to display detected steps, cadence and confidence, accelerometer data, time stamp u eventwalment data oħra tas-sensuri, f'ħin reali, bl-użu tal-MEMS-Studio.
2.4
Applikazzjoni tal-MEMS Studio
Is-sample application uses MEMS-Studio application, which can be downloaded from www.st.com.
Pass 1. Kun żgur li s-sewwieqa meħtieġa huma installati u l-bord STM32 Nucleo b'bord ta 'espansjoni xieraq huwa konness mal-PC.
UM2350 – Rev 4
paġna 7/16
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
Pass 2.
Niedi l-applikazzjoni MEMS-Studio biex tiftaħ it-tieqa ewlenija tal-applikazzjoni.
Jekk bord STM32 Nucleo b'firmware appoġġjat ikun imqabbad mal-PC, dan jiġi skopert awtomatikament. Agħfas il-buttuna [Connect] biex tistabbilixxi konnessjoni mal-bord ta' evalwazzjoni.
Figura 4. MEMS-Studio – Ikkonnettja
Pass 3. Meta tkun imqabbda ma' bord STM32 Nucleo b'firmware appoġġjat, tinfetaħ it-tab [Library Evaluation].
Biex tibda u twaqqaf l-istriming tad-dejta, aqleb il-bar tal-għodda vertikali [Start] xierqa.
jew il-buttuna [Stop] fuq barra
Id-dejta li ġejja mis-sensor konness tista 'tkun viewed tagħżel it-tab [Tabella tad-Data] fuq il-bar tal-għodda vertikali ta 'ġewwa.
Figura 5. MEMS-Studio – Evalwazzjoni tal-Librerija – Tabella tad-Dejta
UM2350 – Rev 4
paġna 8/16
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
Step 4. Click on the [Pedometer] to open the dedicated application window. Figure 6. MEMS-Studio – Library Evaluation – Pedometer
Pass 5.
Ikklikkja fuq il-[Save To File] to open the dataloging configuration window. Select the sensor and pedometer data to be saved in the fileTista' tibda jew twaqqaf is-salvataġġ billi tikklikkja fuq il-korrispondenti
buttuna.
Figura 7. MEMS-Studio – Evalwazzjoni tal-Librerija – Save To File
UM2350 – Rev 4
paġna 9/16
UM2350
MotionPW middleware library in X-CUBE-MEMS1 software expansion for STM32Cube
Pass 6.
Il-modalità ta' Injezzjoni tad-Data tista' tintuża biex tintbagħat id-data miksuba qabel lill-librerija u tirċievi d-data
riżultat. Agħżel it-tab [Injezzjoni tad-Data] fuq il-bar tal-għodda vertikali biex tiftaħ id-dedikata view għal din il-funzjonalità.
Figura 8. MEMS-Studio – Evalwazzjoni tal-Librerija – Injezzjoni tad-Data
Pass 7.
Ikklikkja fuq il-buttuna [Ibbrawżja] biex tagħżel il- file bid-dejta maqbuda qabel fil-format CSV. Id-dejta se titgħabba fit-tabella fil-kurrent viewButtuni oħra se jsiru attivi. Tista' tikklikkja fuq:
Buttuna [Offline Mode] biex tixgħel/titfi l-modalità offline tal-firmware (modalità li tutilizza d-dejta miġbura qabel).
Buttuni [Start]/[Stop]/[Step]/[Repeat] biex jikkontrollaw il-fluss tad-dejta minn MEMS-Studio għal-librerija.
UM2350 – Rev 4
paġna 10/16
UM2350
Referenzi
3
Referenzi
Ir-riżorsi kollha li ġejjin huma disponibbli b'xejn fuq www.st.com. 1. UM1859: Introduzzjoni għas-softwer tas-sensuri ambjentali u tal-moviment MEMS X-CUBE-MEMS1
espansjoni għal STM32Cube 2. UM1724: Bordijiet STM32 Nucleo-64 (MB1136) 3. UM3233: Nibdew b'MEMS-Studio
UM2350 – Rev 4
paġna 11/16
UM2350
Storja tar-reviżjoni
Tabella 4. Storja tar-reviżjoni tad-dokument
Data
Bidliet fil-verżjoni
24-Jan-2018 1 Initial release.
21-Mar-2018 2 Updated Introduction and Section 2.1 MotionPW overview. Updated Section 2.2.5: Algorithm performance and Figure 3. STM32 Nucleo: LEDs, button, jumper.
20-Feb-2019 3 Added X-NUCLEO-IKS01A3 expansion board compatibility information.
Updated Section Introduction, Section 2.1: MotionPW overview, Section 2.2.1: MotionPW library 20-May-2025 4 description, Section 2.2.2: MotionPW APIs, Section 2.2.4: Demo code, Section 2.2.5: Algorithm
prestazzjoni, Taqsima 2.3: Sampl-applikazzjoni, Taqsima 2.4: Applikazzjoni MEMS Studio
UM2350 – Rev 4
paġna 12/16
UM2350
Kontenut
Kontenut
1 Acronyms and abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 MotionPW middleware library in X-CUBE-MEMS1 software expansion for
STM32Cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.1 MotionPW overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 MotionPW library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 MotionPW library description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.2 MotionPW APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.3 API flow chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.4 Demo code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.5 Algorithm performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 SampL-applikazzjoni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Applikazzjoni MEMS Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Referenzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Storja tar-reviżjonijiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
UM2350 – Rev 4
paġna 13/16
UM2350
Lista ta' tabelli
Lista ta' tabelli
Tabella 1. Tabella 2. Tabella 3. Tabella 4.
List of acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Algorithm elapse time (µs) Cortex-M4, Cortex-M3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Algorithm elapse time (µs) Cortex-M33 and Cortex-M7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
UM2350 – Rev 4
paġna 14/16
UM2350
Lista ta' figuri
Lista ta' figuri
Figure 1. Figure 2. Figure 3. Figure 4. Figure 5. Figure 6. Figure 7. Figure 8.
MotionPW API logic sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Orientation system for wrist-worn devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 STM32 Nucleo: LEDs, button, jumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 MEMS-Studio – Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 MEMS-Studio – Library Evaluation – Data Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 MEMS-Studio – Library Evaluation – Pedometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 MEMS-Studio – Library Evaluation – Save To File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 MEMS-Studio – Library Evaluation – Data Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
UM2350 – Rev 4
paġna 15/16
UM2350
AVVIŻ IMPORTANTI AQRA B'attenzjoni STMicroelectronics NV u s-sussidjarji tagħha (“ST”) jirriżervaw id-dritt li jagħmlu bidliet, korrezzjonijiet, titjib, modifiki, u titjib għall-prodotti ST u/jew għal dan id-dokument fi kwalunkwe ħin mingħajr avviż. Ix-xerrejja għandhom jiksbu l-aħħar informazzjoni rilevanti dwar il-prodotti ST qabel ma jagħmlu ordnijiet. Il-prodotti ST jinbiegħu skont it-termini u l-kundizzjonijiet tal-bejgħ ta' ST fis-seħħ fil-ħin tar-rikonoxximent tal-ordni. Ix-xerrejja huma unikament responsabbli għall-għażla, l-għażla u l-użu tal-prodotti ST u ST ma jassumi l-ebda responsabbiltà għall-assistenza tal-applikazzjoni jew id-disinn tal-prodotti tax-xerrejja. L-ebda liċenzja, espressa jew impliċita, għal xi dritt ta' proprjetà intellettwali ma tingħata minn ST hawnhekk. Il-bejgħ mill-ġdid ta' prodotti ST b'dispożizzjonijiet differenti mill-informazzjoni stipulata hawnhekk għandu jħassar kull garanzija mogħtija minn ST għal tali prodott. ST u l-logo ST huma trademarks ta' ST. Għal informazzjoni addizzjonali dwar it-trademarks ST, irreferi għal www.st.com/trademarks. L-ismijiet l-oħra kollha tal-prodott jew tas-servizz huma proprjetà tas-sidien rispettivi tagħhom. L-informazzjoni f'dan id-dokument tieħu post u tissostitwixxi l-informazzjoni pprovduta qabel fi kwalunkwe verżjoni preċedenti ta' dan id-dokument.
© 2025 STMicroelectronics Id-drittijiet kollha riżervati
UM2350 – Rev 4
paġna 16/16
Dokumenti / Riżorsi
![]() |
ST X-CUBE-MEMS1 Sensor and Motion Algorithm Software Expansion [pdfManwal tal-Utent STM32 Nucleo, X-NUCLEO-IKS4A1, X-NUCLEO-IKS01A3, X-CUBE-MEMS1 Sensor and Motion Algorithm Software Expansion, X-CUBE-MEMS1, Sensor and Motion Algorithm Software Expansion, Motion Algorithm Software Expansion, Algorithm Software Expansion, Software Expansion |