MacroRat / MouseCode

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sat May 27 03:37:24 2017 +0000
Revision:
37:3dcc95e9321c
Parent:
18:6a4db94011d3
Need to get centered more before turns (so after moving forward). Also fix when both walls are missing!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 /** \addtogroup hal */
sahilmgandhi 18:6a4db94011d3 2 /** @{*/
sahilmgandhi 18:6a4db94011d3 3
sahilmgandhi 18:6a4db94011d3 4 /* mbed Microcontroller Library
sahilmgandhi 18:6a4db94011d3 5 * Copyright (c) 2017 ARM Limited
sahilmgandhi 18:6a4db94011d3 6 *
sahilmgandhi 18:6a4db94011d3 7 * Licensed under the Apache License, Version 2.0 (the "License");
sahilmgandhi 18:6a4db94011d3 8 * you may not use this file except in compliance with the License.
sahilmgandhi 18:6a4db94011d3 9 * You may obtain a copy of the License at
sahilmgandhi 18:6a4db94011d3 10 *
sahilmgandhi 18:6a4db94011d3 11 * http://www.apache.org/licenses/LICENSE-2.0
sahilmgandhi 18:6a4db94011d3 12 *
sahilmgandhi 18:6a4db94011d3 13 * Unless required by applicable law or agreed to in writing, software
sahilmgandhi 18:6a4db94011d3 14 * distributed under the License is distributed on an "AS IS" BASIS,
sahilmgandhi 18:6a4db94011d3 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sahilmgandhi 18:6a4db94011d3 16 * See the License for the specific language governing permissions and
sahilmgandhi 18:6a4db94011d3 17 * limitations under the License.
sahilmgandhi 18:6a4db94011d3 18 */
sahilmgandhi 18:6a4db94011d3 19 #ifndef MBED_FLASH_API_H
sahilmgandhi 18:6a4db94011d3 20 #define MBED_FLASH_API_H
sahilmgandhi 18:6a4db94011d3 21
sahilmgandhi 18:6a4db94011d3 22 #include "device.h"
sahilmgandhi 18:6a4db94011d3 23 #include <stdint.h>
sahilmgandhi 18:6a4db94011d3 24
sahilmgandhi 18:6a4db94011d3 25 #if DEVICE_FLASH
sahilmgandhi 18:6a4db94011d3 26
sahilmgandhi 18:6a4db94011d3 27 #define MBED_FLASH_INVALID_SIZE 0xFFFFFFFF
sahilmgandhi 18:6a4db94011d3 28
sahilmgandhi 18:6a4db94011d3 29 typedef struct flash_s flash_t;
sahilmgandhi 18:6a4db94011d3 30
sahilmgandhi 18:6a4db94011d3 31 #if TARGET_FLASH_CMSIS_ALGO
sahilmgandhi 18:6a4db94011d3 32 #include "flash_data.h"
sahilmgandhi 18:6a4db94011d3 33 #endif
sahilmgandhi 18:6a4db94011d3 34
sahilmgandhi 18:6a4db94011d3 35 #ifdef __cplusplus
sahilmgandhi 18:6a4db94011d3 36 extern "C" {
sahilmgandhi 18:6a4db94011d3 37 #endif
sahilmgandhi 18:6a4db94011d3 38
sahilmgandhi 18:6a4db94011d3 39 /**
sahilmgandhi 18:6a4db94011d3 40 * \defgroup flash_hal Flash HAL API
sahilmgandhi 18:6a4db94011d3 41 * @{
sahilmgandhi 18:6a4db94011d3 42 */
sahilmgandhi 18:6a4db94011d3 43
sahilmgandhi 18:6a4db94011d3 44 /** Initialize the flash peripheral and the flash_t object
sahilmgandhi 18:6a4db94011d3 45 *
sahilmgandhi 18:6a4db94011d3 46 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 47 * @return 0 for success, -1 for error
sahilmgandhi 18:6a4db94011d3 48 */
sahilmgandhi 18:6a4db94011d3 49 int32_t flash_init(flash_t *obj);
sahilmgandhi 18:6a4db94011d3 50
sahilmgandhi 18:6a4db94011d3 51 /** Uninitialize the flash peripheral and the flash_t object
sahilmgandhi 18:6a4db94011d3 52 *
sahilmgandhi 18:6a4db94011d3 53 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 54 * @return 0 for success, -1 for error
sahilmgandhi 18:6a4db94011d3 55 */
sahilmgandhi 18:6a4db94011d3 56 int32_t flash_free(flash_t *obj);
sahilmgandhi 18:6a4db94011d3 57
sahilmgandhi 18:6a4db94011d3 58 /** Erase one sector starting at defined address
sahilmgandhi 18:6a4db94011d3 59 *
sahilmgandhi 18:6a4db94011d3 60 * The address should be at sector boundary. This function does not do any check for address alignments
sahilmgandhi 18:6a4db94011d3 61 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 62 * @param address The sector starting address
sahilmgandhi 18:6a4db94011d3 63 * @return 0 for success, -1 for error
sahilmgandhi 18:6a4db94011d3 64 */
sahilmgandhi 18:6a4db94011d3 65 int32_t flash_erase_sector(flash_t *obj, uint32_t address);
sahilmgandhi 18:6a4db94011d3 66
sahilmgandhi 18:6a4db94011d3 67 /** Program one page starting at defined address
sahilmgandhi 18:6a4db94011d3 68 *
sahilmgandhi 18:6a4db94011d3 69 * The page should be at page boundary, should not cross multiple sectors.
sahilmgandhi 18:6a4db94011d3 70 * This function does not do any check for address alignments or if size is aligned to a page size.
sahilmgandhi 18:6a4db94011d3 71 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 72 * @param address The sector starting address
sahilmgandhi 18:6a4db94011d3 73 * @param data The data buffer to be programmed
sahilmgandhi 18:6a4db94011d3 74 * @param size The number of bytes to program
sahilmgandhi 18:6a4db94011d3 75 * @return 0 for success, -1 for error
sahilmgandhi 18:6a4db94011d3 76 */
sahilmgandhi 18:6a4db94011d3 77 int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data, uint32_t size);
sahilmgandhi 18:6a4db94011d3 78
sahilmgandhi 18:6a4db94011d3 79 /** Get sector size
sahilmgandhi 18:6a4db94011d3 80 *
sahilmgandhi 18:6a4db94011d3 81 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 82 * @param address The sector starting address
sahilmgandhi 18:6a4db94011d3 83 * @return The size of a sector
sahilmgandhi 18:6a4db94011d3 84 */
sahilmgandhi 18:6a4db94011d3 85 uint32_t flash_get_sector_size(const flash_t *obj, uint32_t address);
sahilmgandhi 18:6a4db94011d3 86
sahilmgandhi 18:6a4db94011d3 87 /** Get page size
sahilmgandhi 18:6a4db94011d3 88 *
sahilmgandhi 18:6a4db94011d3 89 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 90 * @param address The page starting address
sahilmgandhi 18:6a4db94011d3 91 * @return The size of a page
sahilmgandhi 18:6a4db94011d3 92 */
sahilmgandhi 18:6a4db94011d3 93 uint32_t flash_get_page_size(const flash_t *obj);
sahilmgandhi 18:6a4db94011d3 94
sahilmgandhi 18:6a4db94011d3 95 /** Get start address for the flash region
sahilmgandhi 18:6a4db94011d3 96 *
sahilmgandhi 18:6a4db94011d3 97 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 98 * @return The start address for the flash region
sahilmgandhi 18:6a4db94011d3 99 */
sahilmgandhi 18:6a4db94011d3 100 uint32_t flash_get_start_address(const flash_t *obj);
sahilmgandhi 18:6a4db94011d3 101
sahilmgandhi 18:6a4db94011d3 102 /** Get the flash region size
sahilmgandhi 18:6a4db94011d3 103 *
sahilmgandhi 18:6a4db94011d3 104 * @param obj The flash object
sahilmgandhi 18:6a4db94011d3 105 * @return The flash region size
sahilmgandhi 18:6a4db94011d3 106 */
sahilmgandhi 18:6a4db94011d3 107 uint32_t flash_get_size(const flash_t *obj);
sahilmgandhi 18:6a4db94011d3 108
sahilmgandhi 18:6a4db94011d3 109 /**@}*/
sahilmgandhi 18:6a4db94011d3 110
sahilmgandhi 18:6a4db94011d3 111 #ifdef __cplusplus
sahilmgandhi 18:6a4db94011d3 112 }
sahilmgandhi 18:6a4db94011d3 113 #endif
sahilmgandhi 18:6a4db94011d3 114
sahilmgandhi 18:6a4db94011d3 115 #endif
sahilmgandhi 18:6a4db94011d3 116
sahilmgandhi 18:6a4db94011d3 117 #endif
sahilmgandhi 18:6a4db94011d3 118
sahilmgandhi 18:6a4db94011d3 119 /** @}*/