a little progress
This commit is contained in:
		
							parent
							
								
									f60166c1a1
								
							
						
					
					
						commit
						3c0d86eb47
					
				
					 2 changed files with 20 additions and 24 deletions
				
			
		| 
						 | 
					@ -53,7 +53,7 @@ char initialReplyBody[50] = "Initial reply";        // 'Status' response if read
 | 
				
			||||||
uint32_t messageCounter = 0;                /* Counts number of messages received to return as part of response */
 | 
					uint32_t messageCounter = 0;                /* Counts number of messages received to return as part of response */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t  rxBody[240];                       /* stores last message master sent us (intentionally a few bytes smaller than txBody) */
 | 
					uint8_t  rxBody[240];                       /* stores last message master sent us (intentionally a few bytes smaller than txBody) */
 | 
				
			||||||
uint8_t  txBody[256];                       /* Return message buffer for computed replies */
 | 
					uint8_t  txBody[MATRIX_ROWS/2];                       /* Return message buffer for computed replies */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BaseSequentialStream *chp = NULL;           // Used for serial logging
 | 
					BaseSequentialStream *chp = NULL;           // Used for serial logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,19 +126,12 @@ const char hexString[16] = "0123456789abcdef";
 | 
				
			||||||
 *  Note: Called in interrupt context, so need to be quick!
 | 
					 *  Note: Called in interrupt context, so need to be quick!
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void twi2c_slave_message_process(I2CDriver *i2cp) {
 | 
					void twi2c_slave_message_process(I2CDriver *i2cp) {
 | 
				
			||||||
  uint8_t *txPtr = txBody;
 | 
					 | 
				
			||||||
  uint8_t txLen;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  size_t len = i2cSlaveBytes(i2cp);         // Number of bytes received
 | 
					  // size_t len = i2cSlaveBytes(i2cp);         // Number of bytes received
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (len >= 2 && rxBody[0] == 0x01 && rxBody[1] == 0x00) {
 | 
					  matrix_copy(txBody);
 | 
				
			||||||
    matrix_row_t matrix[MATRIX_ROWS / 2];
 | 
					 | 
				
			||||||
    matrix_copy(matrix);
 | 
					 | 
				
			||||||
    memcpy(txPtr, matrix, MATRIX_ROWS / 2);
 | 
					 | 
				
			||||||
    txLen = MATRIX_ROWS / 2;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  echoReply.size = txLen;
 | 
					  echoReply.size =  MATRIX_ROWS / 2;
 | 
				
			||||||
  i2cSlaveReplyI(i2cp, &echoReply);
 | 
					  i2cSlaveReplyI(i2cp, &echoReply);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,8 @@ void matrix_init(void) {
 | 
				
			||||||
    right_hand = palReadPad(GPIOC, 13);
 | 
					    right_hand = palReadPad(GPIOC, 13);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // if USB is active, this is the master
 | 
					    // if USB is active, this is the master
 | 
				
			||||||
    master = (USB_DRIVER.state == USB_ACTIVE);
 | 
					    // master = usbGetDriverStateI(&USB_DRIVER) == USB_ACTIVE;
 | 
				
			||||||
 | 
					    master = right_hand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (master) {
 | 
					    if (master) {
 | 
				
			||||||
      twi2c_master_init();
 | 
					      twi2c_master_init();
 | 
				
			||||||
| 
						 | 
					@ -127,23 +128,25 @@ matrix_row_t matrix_scan_common(uint8_t row) {
 | 
				
			||||||
  return data;
 | 
					  return data;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint8_t command[2] = { 0x01, 0x00 };
 | 
				
			||||||
 | 
					uint8_t other_matrix[MATRIX_ROWS] = { 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void matrix_scan_master(void) {
 | 
					void matrix_scan_master(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const uint8_t command[2] = { 0x01, 0x00 };
 | 
					 | 
				
			||||||
  uint8_t other_matrix[MATRIX_ROWS];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  msg_t resp;
 | 
					  msg_t resp;
 | 
				
			||||||
  resp = twi2c_master_send(slaveI2Caddress/2, command, other_matrix, TIME_INFINITE);
 | 
					  resp = twi2c_master_send(slaveI2Caddress/2, command, other_matrix, TIME_IMMEDIATE);
 | 
				
			||||||
  printf("%x\n", resp);
 | 
					  // printf("%x\n", resp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  uint8_t * matrix_pointer;
 | 
					  if (resp == MSG_OK) {
 | 
				
			||||||
  if (right_hand) {
 | 
					    uint8_t * matrix_pointer;
 | 
				
			||||||
    matrix_pointer = matrix;
 | 
					    if (right_hand) {
 | 
				
			||||||
  } else {
 | 
					      matrix_pointer = matrix;
 | 
				
			||||||
    matrix_pointer = matrix + (MATRIX_ROWS / 2);
 | 
					    } else {
 | 
				
			||||||
 | 
					      matrix_pointer = matrix + (MATRIX_ROWS / 2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    memcpy(matrix_pointer, other_matrix, MATRIX_ROWS / 2);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  memcpy(matrix_pointer, other_matrix, MATRIX_ROWS / 2);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t matrix_scan(void) {
 | 
					uint8_t matrix_scan(void) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue