Revision 4172c48d

View differences:

include/DW1000/v1/alld_dw1000_v1.h
1798 1798
void port_EnableEXT_IRQ(void);
1799 1799
void port_DisableEXT_IRQ(void);
1800 1800
decaIrqStatus_t port_GetEXT_IRQStatus(void);
1801
//ITStatus port_GetEXT_IRQStatus(void);
1802 1801

  
1803 1802
void port_set_dw1000_slowrate(void);
1804 1803
void port_set_dw1000_fastrate(void);
include/DW1000/v1/deca_instance_v1.h
474 474
  int instance_init(DW1000Driver* drv);     //TODO
475 475

  
476 476
  // configure the instance and DW1000 device
477
  void instance_config(instanceConfig_t *config, sfConfig_t *sfconfig) ;
477
  void instance_config(instanceConfig_t *config, sfConfig_t *sfconfig, DW1000Driver* drv) ;
478 478

  
479 479
  // configure the MAC address
480 480
  void instancesetaddresses(uint16_t address) ;
source/DW1000/v1/alld_dw1000_v1.c
29 29
 */
30 30

  
31 31
#include <alld_DW1000.h>
32

  
33 32
#if (defined(AMIROLLD_CFG_DW1000) && (AMIROLLD_CFG_DW1000 == 1)) || defined(__DOXYGEN__)
34 33

  
35 34
#include <v1/alld_dw1000_regs_v1.h>
36

  
37 35
#include <aos_thread.h>
38 36
#include <assert.h>
39 37
#include <string.h>
......
1014 1012
#define XTRIM_ADDRESS  (0x1E)
1015 1013

  
1016 1014
int dwt_initialise(const uint16_t config, DW1000Driver* drv)
1017
//int dwt_initialise(const uint16_t config)  // TODO:
1018 1015
{
1019 1016
    uint16_t otp_addr = 0;
1020 1017
    uint32_t ldo_tune = 0;
......
4441 4438
    memcpy(buffer, headerBuffer, headerLength); //copy data to buffer
4442 4439
    memcpy(&buffer[headerLength], bodyBuffer, bodyLength); //copy data to buffer
4443 4440

  
4444
    apalSPITransmit(&MODULE_HAL_SPI_UWB,
4441
    apalSPITransmit(pdw1000local->driver->spid,
4445 4442
                    buffer,
4446 4443
                    bodyLength + headerLength); // send header and data
4447 4444

  
......
4464 4461
                uint8_t *readBuffer)
4465 4462
{
4466 4463

  
4467
    apalSPITransmitAndReceive(&MODULE_HAL_SPI_UWB, // TODO: "pdw1000local->driver->spid" fails two spi configs
4464
    apalSPITransmitAndReceive(pdw1000local->driver->spid,
4468 4465
                              headerBuffer,
4469 4466
                              readBuffer,
4470 4467
                              headerLength,
......
4533 4530
 *
4534 4531
 */
4535 4532

  
4533
/*! @brief sleep or idle the thread in millisecond */
4536 4534
void deca_sleep(unsigned int time_ms)
4537 4535
{
4538 4536
  aosThdMSleep(time_ms);
4539 4537
}
4540 4538

  
4539
/*! @brief sleep or idle the thread in millisecond */
4541 4540
void Sleep(unsigned int time_ms)
4542 4541
{
4543 4542
  aosThdMSleep(time_ms);
......
4548 4547
  return;
4549 4548
}
4550 4549

  
4550
/*! @brief Get the current system tick time */
4551 4551
uint32_t portGetTickCnt(){
4552 4552
  return chVTGetSystemTimeX();
4553 4553
}
......
4557 4557
//}
4558 4558

  
4559 4559

  
4560
/*! @brief Disable the interrupt handler */
4560 4561
void port_DisableEXT_IRQ(void){   
4561 4562
  nvicDisableVector(DW1000_EXTI_IRQn);
4562 4563

  
4563 4564
}
4564 4565

  
4566
/*! @brief Enable the interrupt handler */
4565 4567
void port_EnableEXT_IRQ(void){    
4566 4568
  nvicEnableVector(DW1000_EXTI_IRQn, STM32_IRQ_EXTI10_15_PRIORITY);
4567 4569
}
4568 4570

  
4569

  
4571
/*! @brief Get the current status of the interrupt handler */
4570 4572
decaIrqStatus_t port_GetEXT_IRQStatus(void){
4571 4573
  decaIrqStatus_t bitstatus = RESET;
4572 4574

  
4573 4575
  if(NVIC_GetActive(DW1000_EXTI_IRQn)|| NVIC_GetPendingIRQ(DW1000_EXTI_IRQn)){
4574
    //  if(NVIC_GetPendingIRQ(EXTI15_10_IRQn)){ //if the interrupt is pending (background )
4575 4576
    bitstatus = SET; //Interrupt is active or panding
4576 4577
  }
4577 4578
  else {
source/DW1000/v1/deca_instance_common_v1.c
432 432
// function to initialise instance structures
433 433
//
434 434
// Returns 0 on success and -1 on error
435
//int instance_init(void){   // TODO
436 435
int instance_init(DW1000Driver* drv){
437 436
  int instance = 0 ;
438 437
  int i;
......
513 512
//
514 513
// function to allow application configuration be passed into instance and affect underlying device operation
515 514
//
516
void instance_config(instanceConfig_t *config, sfConfig_t *sfConfig){
515
void instance_config(instanceConfig_t *config, sfConfig_t *sfConfig, DW1000Driver* drv){
517 516
  int instance = 0 ;
518 517
  uint32_t power = 0;
519 518
  uint8_t otprev ;
......
598 597

  
599 598
  if(config->preambleLen == DWT_PLEN_64)  {  //if preamble length is 64
600 599
    //reduce SPI to < 3MHz
601
    setHighSpeed_SPI(FALSE);  //TODO: workaround using flag to change speed
600
    setHighSpeed_SPI(FALSE, drv);
602 601
    dwt_loadopsettabfromotp(0);
603 602
    //increase SPI to max
604
    setHighSpeed_SPI(TRUE);  //TODO: workaround using flag to change speed
603
    setHighSpeed_SPI(TRUE, drv);
605 604
  }
606 605

  
607 606
  instancesettagsleepdelay(sfConfig->pollSleepDly); //set the Tag sleep time
......
1647 1646
void instance_close(void){
1648 1647
  //wake up device from low power mode
1649 1648
  //NOTE - in the ARM  code just drop chip select for 200us
1650
  port_SPIx_clear_chip_select();  //CS low
1649
  clear_SPI_chip_select();  //CS low
1651 1650
  Sleep(1);   //200 us to wake up then waits 5ms for DW1000 XTAL to stabilise
1652
  port_SPIx_set_chip_select();  //CS high
1651
  set_SPI_chip_select();  //CS high
1653 1652
  Sleep(5);
1654 1653
  dwt_entersleepaftertx(0); // clear the "enter deep sleep after tx" bit
1655 1654
  dwt_setinterrupt(0xFFFFFFFF, 0); //don't allow any interrupts

Also available in: Unified diff