nikon f mount protocol sniffer

Dependencies:   mbed

main.cpp

Committer:
muraguchi
Date:
2018-12-05
Revision:
0:bc8e9dd8b17f

File content as of revision 0:bc8e9dd8b17f:

#include "mbed.h"

Serial pc(USBTX, USBRX);

Ticker event_timer;

#define ARY_SIZE 1000

SPISlave spi_slave(p5,p6,p7,p8);
// p5 mosi
// p6 nc
// p7 sclk
// p8 hs

//DigitalIn sclk(p7);
//DigitalIn data(p5);
//DigitalIn hs(p8);

int event_timer_time=0;

void event_timer_progress()
{
    event_timer_time++;
}

int reverse_byte(int byte)
{
    return  ((byte&0x80)>>7)|((byte&0x40)>>5) | ((byte&0x20)>>3) | ((byte&0x10)>>1) | ((byte&0x08)<<1) | ((byte&0x04)<<3) | ((byte&0x02)<<5) | ((byte&0x01)<<7);
}


int main()
{
    int com_seq=0;
    int com_ary[ARY_SIZE];
    int time_ary[ARY_SIZE];

    // 100us ticker
    event_timer.attach(&event_timer_progress, 0.0001); 

    spi_slave.format(8, 3);    
    
    pc.baud(115200);
    pc.printf("Nikon lens serial interface sniffer.\n");
    while(com_seq<ARY_SIZE)
    {
        if(spi_slave.receive())
        {
            com_ary[com_seq]=spi_slave.read();
            time_ary[com_seq]= event_timer_time;
            com_seq++;
        }
    }

    for(int l=0;l<ARY_SIZE;l++)
    {
        int rv_dat=reverse_byte(com_ary[l]);
        if(rv_dat>=0x20 && rv_dat<=0x7e)
           pc.printf("%08.01fms %02X '%c'\n",time_ary[l]/10.0,rv_dat,rv_dat);
        else
           pc.printf("%08.01fms %02X '-'\n",time_ary[l]/10.0,rv_dat);
    }
}