# TP_RequestAutoSamplingStart

## Syntax

  `#include <nitro/spi.h>`

      u32 TP_RequestAutoSamplingStart(
                  u16 vcount,
                  u16 frequence,
                  TPData samplingBufs[],
                  u16 bufSize );

## Arguments

vcount | Base V-count value for auto sampling.
frequence | The number of samples taken during one frame (MAX 4).
samplingBufs | The pointer that sets the buffer in which auto sampling values are stored.
bufSize | The element count of the buffer passed by `samplingBufs`.

## Return Values

Returns 0 if the request succeeds; returns non-zero value if it fails.

## Description

This function issues a request to ARM7 to begin auto sampling touch panel values and waits for the request to complete internally. This is the synchronous version of the `TP_RequestAutoSamplingStartAsync` function. After this request is accepted, sampling is carried out periodically and values are stored in the array specified by `samplingBufs`. The autosampling interval is the interval at which VAlarm samples data uniformly, `frequence` times per frame, based on the value set in `vcount`.
However, the span of time over which the V-Count values range from 200 to 214 is not used for sampling. This is because the V-Count values may be changed by the `GX_SetVCount` function. If the V-count value to be sampled is contained in this interval, sampling is delayed until line 215.
If a user callback is set with the `TP_SetCallback` function, notification is given by a callback each time a value is saved. After this function clears `samplingBufs`, the buffer will be used as a loop buffer. The `TP_GetLatestIndexInAuto` function can be used to get the index of the data that was last saved. When auto-sampling, it is possible that the sampling value for (newest index + 1) will be unexpectedly overwritten by an interrupt. If you are using the sampling values from one frame all together, you can avoid this by securing an area that is at least `frequence` + 1.

## Note

This function uses an interrupt to wait for a completion response from ARM7. Notice that if it is called while FIFO receive interrupts from ARM7 are prohibited, it will not be possible to return from wait.

## See Also

`TP_RequestAutoSamplingStop, TP_GetLatestRawPointInAuto, TP_GetLatestCalibratedPointInAuto, TP_GetLatestIndexInAuto, TP_RequestAutoSamplingStartAsync, TPData`

## Revision History

2007/10/29 Added a description.
2007/10/16 Added an explanation of unused V-count values.
2006/09/01 Revised the description of `bufSize`.
2004/04/21 Made this a synchronous function and created an asynchronous version.
2004/04/16 Initial version.

CONFIDENTIAL