Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
flip2.c File Reference
#include "ac_cfg.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <limits.h>
#include <unistd.h>
#include "avrdude.h"
#include "libavrdude.h"
#include "flip2.h"
#include "dfu.h"
#include "usbdevs.h"
+ Include dependency graph for flip2.c:

Go to the source code of this file.

Classes

struct  flip2
 
struct  flip2_cmd
 

Macros

#define FLIP2(pgm)   ((struct flip2 *)(pgm->cookie))
 
#define FLIP2_STATUS_OK   0x0000
 
#define FLIP2_STATUS_STALL   0x0F0A
 
#define FLIP2_STATUS_MEM_UKNOWN   0x030A
 
#define FLIP2_STATUS_MEM_PROTECTED   0x0300
 
#define FLIP2_STATUS_OUTOFRANGE   0x080A
 
#define FLIP2_STATUS_BLANK_FAIL   0x0500
 
#define FLIP2_STATUS_ERASE_ONGOING   0x0904
 
#define FLIP2_CMD_GROUP_DOWNLOAD   0x01
 
#define FLIP2_CMD_GROUP_UPLOAD   0x03
 
#define FLIP2_CMD_GROUP_EXEC   0x04
 
#define FLIP2_CMD_GROUP_SELECT   0x06
 
#define FLIP2_CMD_PROG_START   0x00
 
#define FLIP2_CMD_READ_MEMORY   0x00
 
#define FLIP2_CMD_SELECT_MEMORY   0x03
 
#define FLIP2_CMD_CHIP_ERASE   0x00
 
#define FLIP2_CMD_START_APP   0x03
 
#define FLIP2_SELECT_MEMORY_UNIT   0x00
 
#define FLIP2_SELECT_MEMORY_PAGE   0x01
 

Enumerations

enum  flip2_mem_unit {
  FLIP2_MEM_UNIT_UNKNOWN = -1 , FLIP2_MEM_UNIT_FLASH = 0x00 , FLIP2_MEM_UNIT_EEPROM = 0x01 , FLIP2_MEM_UNIT_SECURITY = 0x02 ,
  FLIP2_MEM_UNIT_CONFIGURATION = 0x03 , FLIP2_MEM_UNIT_BOOTLOADER = 0x04 , FLIP2_MEM_UNIT_SIGNATURE = 0x05 , FLIP2_MEM_UNIT_USER = 0x06 ,
  FLIP2_MEM_UNIT_INT_RAM = 0x07 , FLIP2_MEM_UNIT_EXT_MEM_CS0 = 0x08 , FLIP2_MEM_UNIT_EXT_MEM_CS1 = 0x09 , FLIP2_MEM_UNIT_EXT_MEM_CS2 = 0x0A ,
  FLIP2_MEM_UNIT_EXT_MEM_CS3 = 0x0B , FLIP2_MEM_UNIT_EXT_MEM_CS4 = 0x0C , FLIP2_MEM_UNIT_EXT_MEM_CS5 = 0x0D , FLIP2_MEM_UNIT_EXT_MEM_CS6 = 0x0E ,
  FLIP2_MEM_UNIT_EXT_MEM_CS7 = 0x0F , FLIP2_MEM_UNIT_EXT_MEM_DF = 0x10
}
 

Functions

static int flip2_open (PROGRAMMER *pgm, char *port_spec)
 
static int flip2_initialize (PROGRAMMER *pgm, AVRPART *part)
 
static void flip2_close (PROGRAMMER *pgm)
 
static void flip2_enable (PROGRAMMER *pgm)
 
static void flip2_disable (PROGRAMMER *pgm)
 
static void flip2_display (PROGRAMMER *pgm, const char *prefix)
 
static int flip2_program_enable (PROGRAMMER *pgm, AVRPART *part)
 
static int flip2_chip_erase (PROGRAMMER *pgm, AVRPART *part)
 
static int flip2_read_byte (PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned long addr, unsigned char *value)
 
static int flip2_write_byte (PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned long addr, unsigned char value)
 
static int flip2_paged_load (PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 
static int flip2_paged_write (PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 
static int flip2_read_sig_bytes (PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem)
 
static void flip2_setup (PROGRAMMER *pgm)
 
static void flip2_teardown (PROGRAMMER *pgm)
 
void flip2_initpgm (PROGRAMMER *pgm)
 

Variables

const char flip2_desc [] = "FLIP USB DFU protocol version 2 (AVR4023)"
 

Class Documentation

◆ flip2

struct flip2
+ Collaboration diagram for flip2:
Class Members
unsigned char boot_ver
struct dfu_dev * dfu
unsigned char part_rev
unsigned char part_sig[3]

◆ flip2_cmd

struct flip2_cmd
Class Members
unsigned char args[4]
unsigned char cmd_id
unsigned char group_id

Macro Definition Documentation

◆ FLIP2

#define FLIP2 (   pgm)    ((struct flip2 *)(pgm->cookie))

◆ FLIP2_CMD_CHIP_ERASE

#define FLIP2_CMD_CHIP_ERASE   0x00

◆ FLIP2_CMD_GROUP_DOWNLOAD

#define FLIP2_CMD_GROUP_DOWNLOAD   0x01

◆ FLIP2_CMD_GROUP_EXEC

#define FLIP2_CMD_GROUP_EXEC   0x04

◆ FLIP2_CMD_GROUP_SELECT

#define FLIP2_CMD_GROUP_SELECT   0x06

◆ FLIP2_CMD_GROUP_UPLOAD

#define FLIP2_CMD_GROUP_UPLOAD   0x03

◆ FLIP2_CMD_PROG_START

#define FLIP2_CMD_PROG_START   0x00

◆ FLIP2_CMD_READ_MEMORY

#define FLIP2_CMD_READ_MEMORY   0x00

◆ FLIP2_CMD_SELECT_MEMORY

#define FLIP2_CMD_SELECT_MEMORY   0x03

◆ FLIP2_CMD_START_APP

#define FLIP2_CMD_START_APP   0x03

◆ FLIP2_SELECT_MEMORY_PAGE

#define FLIP2_SELECT_MEMORY_PAGE   0x01

◆ FLIP2_SELECT_MEMORY_UNIT

#define FLIP2_SELECT_MEMORY_UNIT   0x00

◆ FLIP2_STATUS_BLANK_FAIL

#define FLIP2_STATUS_BLANK_FAIL   0x0500

◆ FLIP2_STATUS_ERASE_ONGOING

#define FLIP2_STATUS_ERASE_ONGOING   0x0904

◆ FLIP2_STATUS_MEM_PROTECTED

#define FLIP2_STATUS_MEM_PROTECTED   0x0300

◆ FLIP2_STATUS_MEM_UKNOWN

#define FLIP2_STATUS_MEM_UKNOWN   0x030A

◆ FLIP2_STATUS_OK

#define FLIP2_STATUS_OK   0x0000

◆ FLIP2_STATUS_OUTOFRANGE

#define FLIP2_STATUS_OUTOFRANGE   0x080A

◆ FLIP2_STATUS_STALL

#define FLIP2_STATUS_STALL   0x0F0A

Enumeration Type Documentation

◆ flip2_mem_unit

Enumerator
FLIP2_MEM_UNIT_UNKNOWN 
FLIP2_MEM_UNIT_FLASH 
FLIP2_MEM_UNIT_EEPROM 
FLIP2_MEM_UNIT_SECURITY 
FLIP2_MEM_UNIT_CONFIGURATION 
FLIP2_MEM_UNIT_BOOTLOADER 
FLIP2_MEM_UNIT_SIGNATURE 
FLIP2_MEM_UNIT_USER 
FLIP2_MEM_UNIT_INT_RAM 
FLIP2_MEM_UNIT_EXT_MEM_CS0 
FLIP2_MEM_UNIT_EXT_MEM_CS1 
FLIP2_MEM_UNIT_EXT_MEM_CS2 
FLIP2_MEM_UNIT_EXT_MEM_CS3 
FLIP2_MEM_UNIT_EXT_MEM_CS4 
FLIP2_MEM_UNIT_EXT_MEM_CS5 
FLIP2_MEM_UNIT_EXT_MEM_CS6 
FLIP2_MEM_UNIT_EXT_MEM_CS7 
FLIP2_MEM_UNIT_EXT_MEM_DF 
108 {
116 FLIP2_MEM_UNIT_USER = 0x06,
127};
@ FLIP2_MEM_UNIT_EXT_MEM_CS1
Definition flip2.c:119
@ FLIP2_MEM_UNIT_EXT_MEM_CS5
Definition flip2.c:123
@ FLIP2_MEM_UNIT_CONFIGURATION
Definition flip2.c:113
@ FLIP2_MEM_UNIT_USER
Definition flip2.c:116
@ FLIP2_MEM_UNIT_EXT_MEM_CS4
Definition flip2.c:122
@ FLIP2_MEM_UNIT_EXT_MEM_CS6
Definition flip2.c:124
@ FLIP2_MEM_UNIT_EXT_MEM_DF
Definition flip2.c:126
@ FLIP2_MEM_UNIT_EXT_MEM_CS0
Definition flip2.c:118
@ FLIP2_MEM_UNIT_BOOTLOADER
Definition flip2.c:114
@ FLIP2_MEM_UNIT_INT_RAM
Definition flip2.c:117
@ FLIP2_MEM_UNIT_EXT_MEM_CS7
Definition flip2.c:125
@ FLIP2_MEM_UNIT_UNKNOWN
Definition flip2.c:109
@ FLIP2_MEM_UNIT_SECURITY
Definition flip2.c:112
@ FLIP2_MEM_UNIT_EEPROM
Definition flip2.c:111
@ FLIP2_MEM_UNIT_EXT_MEM_CS3
Definition flip2.c:121
@ FLIP2_MEM_UNIT_EXT_MEM_CS2
Definition flip2.c:120
@ FLIP2_MEM_UNIT_FLASH
Definition flip2.c:110
@ FLIP2_MEM_UNIT_SIGNATURE
Definition flip2.c:115

Function Documentation

◆ flip2_chip_erase()

int flip2_chip_erase ( PROGRAMMER pgm,
AVRPART part 
)
static
960{
961 return -1;
962}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_close()

void flip2_close ( PROGRAMMER pgm)
static
939{
940}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_disable()

void flip2_disable ( PROGRAMMER pgm)
static
947{
948}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_display()

void flip2_display ( PROGRAMMER pgm,
const char *  prefix 
)
static
951{
952}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_enable()

void flip2_enable ( PROGRAMMER pgm)
static
943{
944}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_initialize()

int flip2_initialize ( PROGRAMMER pgm,
AVRPART part 
)
static
934{
935 return -1;
936}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_initpgm()

void flip2_initpgm ( PROGRAMMER pgm)
179{
180 strcpy(pgm->type, "flip2");
181
182 /* Mandatory Functions */
198}
static int flip2_open(PROGRAMMER *pgm, char *port_spec)
Definition flip2.c:926
static int flip2_read_sig_bytes(PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem)
Definition flip2.c:988
static void flip2_disable(PROGRAMMER *pgm)
Definition flip2.c:946
static int flip2_initialize(PROGRAMMER *pgm, AVRPART *part)
Definition flip2.c:933
static int flip2_paged_write(PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned int page_size, unsigned int addr, unsigned int n_bytes)
Definition flip2.c:982
static void flip2_teardown(PROGRAMMER *pgm)
Definition flip2.c:997
static int flip2_chip_erase(PROGRAMMER *pgm, AVRPART *part)
Definition flip2.c:959
static int flip2_write_byte(PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned long addr, unsigned char value)
Definition flip2.c:970
static void flip2_display(PROGRAMMER *pgm, const char *prefix)
Definition flip2.c:950
static void flip2_enable(PROGRAMMER *pgm)
Definition flip2.c:942
static int flip2_read_byte(PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned long addr, unsigned char *value)
Definition flip2.c:964
static void flip2_setup(PROGRAMMER *pgm)
Definition flip2.c:993
static int flip2_program_enable(PROGRAMMER *pgm, AVRPART *part)
Definition flip2.c:954
static void flip2_close(PROGRAMMER *pgm)
Definition flip2.c:938
static int flip2_paged_load(PROGRAMMER *pgm, AVRPART *part, AVRMEM *mem, unsigned int page_size, unsigned int addr, unsigned int n_bytes)
Definition flip2.c:976
static PROGRAMMER * pgm
Definition main.c:192
void(* display)(struct programmer_t *pgm, const char *p)
Definition libavrdude.h:644
int(* paged_write)(struct programmer_t *pgm, AVRPART *p, AVRMEM *m, unsigned int page_size, unsigned int baseaddr, unsigned int n_bytes)
Definition libavrdude.h:659
int(* read_sig_bytes)(struct programmer_t *pgm, AVRPART *p, AVRMEM *m)
Definition libavrdude.h:672
int(* open)(struct programmer_t *pgm, char *port)
Definition libavrdude.h:657
int(* read_byte)(struct programmer_t *pgm, AVRPART *p, AVRMEM *m, unsigned long addr, unsigned char *value)
Definition libavrdude.h:670
int(* paged_load)(struct programmer_t *pgm, AVRPART *p, AVRMEM *m, unsigned int page_size, unsigned int baseaddr, unsigned int n_bytes)
Definition libavrdude.h:662
void(* teardown)(struct programmer_t *pgm)
Definition libavrdude.h:685
void(* enable)(struct programmer_t *pgm)
Definition libavrdude.h:645
int(* program_enable)(struct programmer_t *pgm, AVRPART *p)
Definition libavrdude.h:649
int(* write_byte)(struct programmer_t *pgm, AVRPART *p, AVRMEM *m, unsigned long addr, unsigned char value)
Definition libavrdude.h:668
void(* setup)(struct programmer_t *pgm)
Definition libavrdude.h:684
char type[PGM_TYPELEN]
Definition libavrdude.h:619
int(* initialize)(struct programmer_t *pgm, AVRPART *p)
Definition libavrdude.h:643
void(* close)(struct programmer_t *pgm)
Definition libavrdude.h:658
int(* chip_erase)(struct programmer_t *pgm, AVRPART *p)
Definition libavrdude.h:650
void(* disable)(struct programmer_t *pgm)
Definition libavrdude.h:646

References programmer_t::chip_erase, programmer_t::close, programmer_t::disable, programmer_t::display, programmer_t::enable, flip2_chip_erase(), flip2_close(), flip2_disable(), flip2_display(), flip2_enable(), flip2_initialize(), flip2_open(), flip2_paged_load(), flip2_paged_write(), flip2_program_enable(), flip2_read_byte(), flip2_read_sig_bytes(), flip2_setup(), flip2_teardown(), flip2_write_byte(), programmer_t::initialize, programmer_t::open, programmer_t::paged_load, programmer_t::paged_write, pgm, programmer_t::program_enable, programmer_t::read_byte, programmer_t::read_sig_bytes, programmer_t::setup, programmer_t::teardown, programmer_t::type, and programmer_t::write_byte.

+ Here is the call graph for this function:

◆ flip2_open()

int flip2_open ( PROGRAMMER pgm,
char *  port_spec 
)
static
927{
928 fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
929 progname);
930 return -1;
931}
char * progname
Definition main.c:61

References progname.

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_paged_load()

int flip2_paged_load ( PROGRAMMER pgm,
AVRPART part,
AVRMEM mem,
unsigned int  page_size,
unsigned int  addr,
unsigned int  n_bytes 
)
static
978{
979 return -1;
980}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_paged_write()

int flip2_paged_write ( PROGRAMMER pgm,
AVRPART part,
AVRMEM mem,
unsigned int  page_size,
unsigned int  addr,
unsigned int  n_bytes 
)
static
984{
985 return -1;
986}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_program_enable()

int flip2_program_enable ( PROGRAMMER pgm,
AVRPART part 
)
static
955{
956 return -1;
957}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_read_byte()

int flip2_read_byte ( PROGRAMMER pgm,
AVRPART part,
AVRMEM mem,
unsigned long  addr,
unsigned char *  value 
)
static
966{
967 return -1;
968}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_read_sig_bytes()

int flip2_read_sig_bytes ( PROGRAMMER pgm,
AVRPART part,
AVRMEM mem 
)
static
989{
990 return -1;
991}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_setup()

void flip2_setup ( PROGRAMMER pgm)
static
994{
995}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_teardown()

void flip2_teardown ( PROGRAMMER pgm)
static
998{
999}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

◆ flip2_write_byte()

int flip2_write_byte ( PROGRAMMER pgm,
AVRPART part,
AVRMEM mem,
unsigned long  addr,
unsigned char  value 
)
static
972{
973 return -1;
974}

Referenced by flip2_initpgm().

+ Here is the caller graph for this function:

Variable Documentation

◆ flip2_desc

const char flip2_desc[] = "FLIP USB DFU protocol version 2 (AVR4023)"