Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sun May 14 23:18:57 2017 +0000
Revision:
18:6a4db94011d3
Publishing again

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 /* mbed Microcontroller Library
sahilmgandhi 18:6a4db94011d3 2 * Copyright (c) 2016 u-blox
sahilmgandhi 18:6a4db94011d3 3 *
sahilmgandhi 18:6a4db94011d3 4 * Licensed under the Apache License, Version 2.0 (the "License");
sahilmgandhi 18:6a4db94011d3 5 * you may not use this file except in compliance with the License.
sahilmgandhi 18:6a4db94011d3 6 * You may obtain a copy of the License at
sahilmgandhi 18:6a4db94011d3 7 *
sahilmgandhi 18:6a4db94011d3 8 * http://www.apache.org/licenses/LICENSE-2.0
sahilmgandhi 18:6a4db94011d3 9 *
sahilmgandhi 18:6a4db94011d3 10 * Unless required by applicable law or agreed to in writing, software
sahilmgandhi 18:6a4db94011d3 11 * distributed under the License is distributed on an "AS IS" BASIS,
sahilmgandhi 18:6a4db94011d3 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sahilmgandhi 18:6a4db94011d3 13 * See the License for the specific language governing permissions and
sahilmgandhi 18:6a4db94011d3 14 * limitations under the License.
sahilmgandhi 18:6a4db94011d3 15 */
sahilmgandhi 18:6a4db94011d3 16
sahilmgandhi 18:6a4db94011d3 17 #include <stdint.h>
sahilmgandhi 18:6a4db94011d3 18 #include <stdbool.h>
sahilmgandhi 18:6a4db94011d3 19 #include "mbed_assert.h"
sahilmgandhi 18:6a4db94011d3 20 #include "cmsis.h"
sahilmgandhi 18:6a4db94011d3 21 #include "hi2110_init.h"
sahilmgandhi 18:6a4db94011d3 22
sahilmgandhi 18:6a4db94011d3 23 /* ----------------------------------------------------------------
sahilmgandhi 18:6a4db94011d3 24 * MACROS
sahilmgandhi 18:6a4db94011d3 25 * ----------------------------------------------------------------*/
sahilmgandhi 18:6a4db94011d3 26
sahilmgandhi 18:6a4db94011d3 27 /* ----------------------------------------------------------------
sahilmgandhi 18:6a4db94011d3 28 * FUNCTION PROTOTYPES
sahilmgandhi 18:6a4db94011d3 29 * ----------------------------------------------------------------*/
sahilmgandhi 18:6a4db94011d3 30
sahilmgandhi 18:6a4db94011d3 31 static uint8_t get_owner(uint8_t pin);
sahilmgandhi 18:6a4db94011d3 32
sahilmgandhi 18:6a4db94011d3 33 /* ----------------------------------------------------------------
sahilmgandhi 18:6a4db94011d3 34 * NON-API FUNCTIONS
sahilmgandhi 18:6a4db94011d3 35 * ----------------------------------------------------------------*/
sahilmgandhi 18:6a4db94011d3 36
sahilmgandhi 18:6a4db94011d3 37 /* Determine which core owns a given pin
sahilmgandhi 18:6a4db94011d3 38 * 0: None
sahilmgandhi 18:6a4db94011d3 39 * 1: security core
sahilmgandhi 18:6a4db94011d3 40 * 2: protocol core
sahilmgandhi 18:6a4db94011d3 41 * 3: apps core */
sahilmgandhi 18:6a4db94011d3 42 static uint8_t get_owner(uint8_t pin)
sahilmgandhi 18:6a4db94011d3 43 {
sahilmgandhi 18:6a4db94011d3 44 uint8_t value;
sahilmgandhi 18:6a4db94011d3 45 uint8_t pio_owner_shift = (pin & 0x0F) << 1;
sahilmgandhi 18:6a4db94011d3 46 volatile uint32_t * pio_owner_reg = (&PIO_OWNER0 + (pin >> 4));
sahilmgandhi 18:6a4db94011d3 47
sahilmgandhi 18:6a4db94011d3 48 value = 0x03 & (*pio_owner_reg >> pio_owner_shift);
sahilmgandhi 18:6a4db94011d3 49
sahilmgandhi 18:6a4db94011d3 50 return value;
sahilmgandhi 18:6a4db94011d3 51 }
sahilmgandhi 18:6a4db94011d3 52
sahilmgandhi 18:6a4db94011d3 53 /* ----------------------------------------------------------------
sahilmgandhi 18:6a4db94011d3 54 * MBED API FUNCTIONS
sahilmgandhi 18:6a4db94011d3 55 * ----------------------------------------------------------------*/
sahilmgandhi 18:6a4db94011d3 56
sahilmgandhi 18:6a4db94011d3 57 void HI2110_init(void)
sahilmgandhi 18:6a4db94011d3 58 {
sahilmgandhi 18:6a4db94011d3 59 __attribute__ ((unused)) uint8_t owner[20];
sahilmgandhi 18:6a4db94011d3 60
sahilmgandhi 18:6a4db94011d3 61 /* This purely for diagnostics to see who owns which PIO pin.
sahilmgandhi 18:6a4db94011d3 62 * Put a break-point at the end of this function and take a look
sahilmgandhi 18:6a4db94011d3 63 * at the array.
sahilmgandhi 18:6a4db94011d3 64 * Any items marked as 1 or 2 belong to the security or protocol
sahilmgandhi 18:6a4db94011d3 65 * cores. Otherwise they are up for grabs. */
sahilmgandhi 18:6a4db94011d3 66 for (uint8_t x = 0; x < 20; x++) {
sahilmgandhi 18:6a4db94011d3 67 owner[x] = get_owner(x);
sahilmgandhi 18:6a4db94011d3 68 }
sahilmgandhi 18:6a4db94011d3 69 }