1895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall/*
2895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall $License:
3895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall   Copyright 2011 InvenSense, Inc.
4895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
5895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall Licensed under the Apache License, Version 2.0 (the "License");
6895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall you may not use this file except in compliance with the License.
7895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall You may obtain a copy of the License at
8895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
9895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall http://www.apache.org/licenses/LICENSE-2.0
10895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
11895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall Unless required by applicable law or agreed to in writing, software
12895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall distributed under the License is distributed on an "AS IS" BASIS,
13895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall See the License for the specific language governing permissions and
15895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall limitations under the License.
16895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall  $
17895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall */
18895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#ifndef INVENSENSE_INV_FIFO_HW_H__
19895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#define INVENSENSE_INV_FIFO_HW_H__
20895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
21895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#include "mpu.h"
22895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#include "mltypes.h"
23895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#include "mlinclude.h"
24895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#ifdef INV_INCLUDE_LEGACY_HEADERS
25895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#include "mlFIFOHW_legacy.h"
26895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#endif
27895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
28895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#ifdef __cplusplus
29895401859313187f15a800e62d43e6bcbf48fadaJP Abgrallextern "C" {
30895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#endif
31895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
32895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    // This is the maximum amount of FIFO data we would read in one packet
33895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#define MAX_FIFO_LENGTH             (256)
34895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    // This is the hardware size of the FIFO
35895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#define FIFO_FOOTER_SIZE            (2)
36895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
37895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    uint_fast16_t inv_get_fifo(uint_fast16_t length, unsigned char *buffer);
38895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    inv_error_t inv_get_fifo_status(void);
39895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    inv_error_t inv_get_fifo_length(uint_fast16_t * len);
40895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    short inv_get_fifo_count(void);
41895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    inv_error_t inv_reset_fifo(void);
42895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    void inv_init_fifo_hardare();
43895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall    inv_error_t inv_read_fifo(unsigned char *data, uint_fast16_t len);
44895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall
45895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#ifdef __cplusplus
46895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall}
47895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#endif
48895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall#endif                          // INVENSENSE_INV_FIFO_HW_H__
49